티스토리 뷰

일단은 이 둘을 연결하기 전에 webhook이라는 개념부터 알고 넘어가자.

webhook이란 간단히 말해 서버(이글로 치면 gitlab)에서 어떤 이벤트가 발생했을때 클라이언트(jenkins)에게 알릴수 있는 메커니즘이라고 이해하면 된다. 서버가 클라이언트를 호출하여 역방향 API 라고도 한다. 

즉 gitlab에서 어떤 변경사항(push)이 생기게 되면 이 정보를 가지고 jenkins의 특정 job과 연동을 할수 있다는 것이다.


webhook을 설정하기 전에 일단은 jenkins와 gitlab을 연결하는 작업부터 하자. gitlab plugin은 설치가 되어있다고 가정한다. 

 

Jenkins 관리 > 시스템설정 으로 들어가면 Gitlab 을 설정하는 부분이 있다. 

 

이곳에 앞으로 jenkins에서 접근할 connection name 이라는 것과 Gitlab host URL, Credentials 을 입력한다. 옆에 열쇠모양의 Add를 누르면 gitlab Credentials을 설정할 수 있다.

 

 

이렇게 Kind에서 GitLab API token을 선택하고 token 정보를 입력해준다. 그럼 이 API token은 어디서 받아오는 것일까? 물론 gitlab에서 받아올 수 있다. 

 

 

맨 우측 상단에 위와 같은 모양을 클릭하면 Settings에 진입을 할 수 있다. 

 

 

User Settings에서 Access Tokens를 클릭. Name을 입력하고 Scopes 등을 설정하고 Token을 생성해준다. 

GitLab의 token을 획득했으면 다시 Jenkins로 돌아와서 GitLab API token 부분에 token을 넣어주면 연결 끝!

Jenkins에서 Test Connection을 눌러서 연결을 확인해 본다. 


webhook 설정

 

Jenkins에서 특정 job이 git과 연동이 되었으면 하는 것이 있을것이다. 예를들면 git에서 push가 되면 그 git source를 가지고 와서 빌드하고 배포하고 하는 일련의 과정이 자동으로 이루어지는 이런 일들을 하고 싶을수도 있다. git과 연동하고 싶은 Jenkins의 job 설정으로 들어가면 

 

 

빌드 유발 부분이 있고 gitlab plugin을 설치했다면 Build when a change is pushed to GitLab. GitLab webhook ~~ 이런 항목이 보일것이다. 이부분이 바로 jenkins에서 webhook을 설정하는 부분이다. 여기서 기억해 둬야 할 부분은 webhook URL 이다. 이 job의 url은 여러 경로로 볼수가 있는데 (예를들면 url에 view 가 들어간다거나..) 그런것을 사용하면 안되고 반드시 여기 명시된 URL을 사용해야 한다. 

 

 

고급 을 눌러서 확장시켜보면 아래와 같은 항목들이 추가적으로 나온다. 이중 Secret token 항목값을 Generate 하여 가지고 있어야 한다. jenkins에서는 일단 webhook URL 과 Generate 된 Secret token 정보를 가지고 있으면 된다. 

그런 다음 다시 gitlab으로 들어가 본다. 

 

아까 gitlab과 jenkins를 연결할때는 global setting이었다면 webhook은 프로젝트별로 설정한다. 

 

 

프로젝트 좌측에 Settings > Webhooks 로 진입을 한다. 

 

 

그럼 다음과 같은 항목이 나온다. 아까 말했던 URL과 Secret Token 정보를 여기에 넣어주면 끝! 나머지 항목은 있는 그대로 기본으로 해줬고 마지막에 있는 Add Webhook으로 webhook을 생성해 준다. 생성하고 난 후 test까지 할 수 있다.

test를 성공했다면 실제 git 소스를 push를 해보도록 하자. 그리고 push 한순간 jenkins로 돌아가서 job이 자동으로 실행이 되는지 살펴보자. 

 

 

제대로 webhook이 설정되었다면 Build History에 위와 같이 표시가 될 것이다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30