Gitlab, Jenkins Webhook 연동하기

Jira에 연동하기 앞서 Gitlab과 Jenkins를 연동하기 위한 Webhook을 생성하는 방법을 소개합니다.

이 포스팅은 쿠버네티스에서 Jira를 활용한 CI/CD 파이프라인 구축 방법에 관한 연재글로 다음 순서로 진행합니다.

사전 준비 사항

버전 정보

  • Jenkins ver. 2.222.4
  • Gitlab ver. 13.0.5

Steps

  1. Jenkins Plugin 설치
  2. Gitlab에서 Access Token 발급
  3. Jenkins에 발급받은 Access Token을 Credential로 등록
  4. Jenkins gloabl settings 에서 gitlab 설정 추가
  5. Jenkins User 생성
  6. Jenkins Project 생성 및 Build Trigger 설정
  7. Gitlab에 Webhook 등록

1. Jenkins Plugin 설치

Jenkins와 Gitlab을 연동하기 위해서는 Gitlab, Gitlab Hook Plugin 이 필요합니다. Jenkins 관리 > 플러그인 관리 > 설치 가능 에서 플러그인 목록을 확인하고 설치합니다.

2. Gitlab에서 Access Token 발급

Gitlab User settings 에서 Access Token을 발급합니다. 쓰기 권한 빼고 모든 권한을 준 뒤, 발급한 token을 복사해둡니다.

3. Jenkins에 발급받은 Access Token을 Credential로 등록

이미 설치되어 있다면 바로 Jenkins에서 Jenkins > Credentials > System > Global Credentials 에 Gitlab 에서 만든 토큰을 Gitlab API Token형식으로 등록합니다.

jenkins_gitlab_api

4. Jenkins gloabl settings 에서 gitlab 설정 추가

Jenkins > Settings 에서 등록한 Gitlab 토큰url 정보를 입력합니다.
jenkins_gitlab_setting

5. Jenkins User 생성

Jenkins와 Gitlab을 연동할 때 Jenkins에서 연동을 담당할 User를 생성합니다.

jenkins_create_user

6. Jenkins Project 생성 및 Build Trigger 설정

Jenkins에서 새로운 아이템 > 파이프라인 선택해 생성하고, Configure에서 빌드트리거를 설정합니다. 여기서 Gitlab Webhook Url: http://gitlab.sample.com:8022/project/jira-cicd-demo을 확인할 수 있습니다.

jenkins_build_trigger

7. Gitlab에 Webhook 등록

Gitlab에서 Settings > Webhooks 에서 Jenkins와 Gitlab을 연동하는 Webhook을 등록할 수 있습니다. 크게 id/password 방식과 secret token 방식이 있는데, 여기서는 secret token 방식을 사용하겠습니다. 앞에서 확인한 webhook url을 입력하고, jenkins로 돌아가서 Configure> Build Trigger 탭에서 고급 버튼을 클릭하면 secret token을 만들 수 있습니다.

설정을 완료하려하면 다음과 같은 에러를 마주할 수 있는데, 다음과 같은 해결 방법을 시도해볼 수 있습니다.
jenkins_webhook_error

Gitlab의 Admin area > Settings > Network > Outbound Request 에서 체크박스를 모두 클릭하고, Jenkins url을 등록해줍니다. 등록한 webhook에서 test 버튼을 클릭하고 push event를 발생시켜봅니다. 연결에 성공하면 다음 그림처럼 메세지가 뜨면 성공입니다.

jenkins_webhook_success

Jenkins에서도 Gitlab push로 빌드 성공했음을 확인하실 수 있습니다.
jenkins_build_success

Reference

Summary and Next Step

지금까지 Gitlab과 Jenkins를 연동하기 위한 웹훅을 생성하고 등록하는 방법을 알아봤습니다. 다음글에서는 Jira와 Gitlab, Jenkins를 연동해 Jira의 이슈에서 Gitlab의 코드 소스 커밋과 Jenkins 자동 빌드를 수행한 결과를 확인할 수 있도록 파이프라인을 완성해보겠습니다.