[DevOps] GitLab 과 Jenkins 연동 Develop Tip

DevOps 가 힘들게 느껴지는 이유 중에 하나는 
GitLab 과 같은 협업 툴과 JenKins와 같은 CI 툴이 
매끄럽게 잘 연동되는 것이 핵심이라 보여집니다.

다음은 까먹기 전에 GitLab과 JenKins 의 연동에 관하여
연동하는 방법을 정리해 봅니다.

몇달 전만 하더라도 Jenkins와 GitLab 자체를 컨테이너로
돌리는데 몇몇 문제점들이 존재했었는데 이제는 아주 잘 돕니다.

암튼 다음은 그 과정의 캡쳐했던 것을 정리해 보았습니다.

jenkins를 처음 실행 하면 위와 같이 Unlock 화면이 나오고 이를 넣어주면 활성화됩니다.

플러그인 선택을 합니다.

gitlab 과 git 플러그인을 설치합니다.

디폴트 플러그인 등을 포함하여 위와 같이 설치가 잘 됩니다.

처음 사용자를 넣으면,

젠킨스 사용 가능 환경이 됩니다.

이제 새 작업을 만들면 되는데 그 이전 GitLab 연동을 위하여 이미 동작하고 있는 GitLab 과 연동하기 위하여,

특정 사용자의 "Profile Settins"를 선택하여,

상단 "Access Tokens"을 선택하고 Name과 Expires at 파기 날짜를 넣어주고 "Create Personal Access Token"을 해 줍니다.

그리고 위와 같이 나오는 (중간에 보안을 위해서 막았습니다) 토큰을 클립보드에 저장해 놓습니다.

이제 다시 젠킨스로 돌아와,

좌측 메뉴에서 "Credentials"을 선택하고,

System > Global credentials 를 선택하면,

위와 같이 나오는데 "adding some credentials?"를 선택하여,

GitLab 에서 만들어 놓았던 개인 토큰을 위와 같이 넣어줍니다.

그러면 위와 같이 해당 토큰이 시스템 글로벌 Credential로 등록되었다고 나오네요.

다시 젠킨스의 "새작업"을 선택하고,

일단은 간단하게 "Freestyle project"를 선택했습니다.

설명을 넣어주고,

Git 과 연동을 시키려는데 위의 오류는 해당 호스트명을 찾을 수 없다는 것인데 해당 컨테이너에 /etc/hosts 에 등록하여 해결하였습니다. 컨테이너를 run 할 때 --add-host 로 추가했습니다. (DNS로 찾지 않고 /etc/hosts 로 찾은 경우)
그리고 Credential로 사용자/암호로 넣었는데, 위와 같이 Add를 선택하여,

해당 Credenal을 넣고,

지정해 주면,

git 연동이 잘 되었습니다.

Build에 "Add build step"을 선택하여

특정 build 명령을 넣어 줍니다. (위에는 테스트로 echo를 주었는데 자신만의 buiild, test, deploy 등을 넣어줍니다)

Build 후 조치에는 GitLab 연동을 하고,

위와 같이 "빌드 후 조치"를 넣어주고,

GitLab의 Web Hook 에 위와 같이 등록을 해 주면, (해당 URL은 http://호스트/project/작업이름 식으로 지정합니다)

이제 GitLab에서 누군가가 PUSH를 해 주는 순간 자동으로 해당 jenkins build가 성공 또는 실패 되었음을 나타내며,

해당 내용을 눌러,

확인하면 위와 같이 잘 동작하고 있음을 알 수 있습니다.


어느 분께는 도움이 되셨기를....

덧글

  • 2018/02/19 22:44 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 지훈현서아빠 2018/02/20 15:23 #

    음.. 최근에는 거의 토큰인증으로 가고 있지 않나 싶습니다만..
  • 2018/11/29 16:41 # 답글 비공개

    비공개 덧글입니다.
  • 도커 2019/05/29 11:01 # 삭제 답글

    gitlat 과 jenkins를 docker 컨테이너로 실행한 상태 입니다. 소스코드 관리에서 Git 과 연동을 시키려는데 해당 호스트명을 찾을 수 없다는 에러가 나오면
    해당 컨테이너에 /etc/hosts 에 등록하여 해결하였다고 하셨는데 해당 컨테이너면 jenkins 컨테이너를 말하는 것인지요?
  • 지훈현서아빠 2019/05/29 11:14 #

    아마 최근에는 다 docker-compose.yaml 파일로 기술해 놓으면 알아서 서로 컨테이너들이 참조를 하더라구요~
    참고가 되시기를 ..
  • 도커 2019/05/29 11:24 # 삭제 답글

    docker-compose.yaml 파일이란 말씀이시면.... 컨테이너 끼리 링크를 걸어주라는 말씀이신지...
  • 지훈현서아빠 2019/05/29 12:03 #

    넹~ 그러면 알아서 서비스 (또는 컨테이너 이름으로 지정한 것) 이름으로 안에 들어가서 ping을 해 보면
    되는 것을 확인할 수 있을 겁니다~
  • 도커 2019/05/29 13:46 # 삭제 답글

    감사합니다. ^^ 덕분에 해결되었습니다. 근데 이번엔 webhook 연결이 안되네요 ㅠㅠ
댓글 입력 영역

구글애드텍스트