gitlab 의 웹 훅(web hook) 기능 사용

git 도 다른 형상 관리 시스템처럼 이벤트 훅(event hook) 기능을 갖고 있다.

 

git 의 훅은 클라이언트 훅과 서버 훅으로 나눠어져 있으며  "커밋 로그 메시지가 이슈 번호를 포함해야 한다" 등의 정책을 강제하려면 서버 훅에 설정해야 한다.

 

gitlab 은 웹 관리 UI 에서 프로젝트마다 간편하게 훅을 설정할 수 있으며 프로젝트 마스터 권한이 있어야 수행 가능하다.

웹 훅은 post-receive 만 가능하며 pre-receive 가 안 되므로(http://www.androider.me/2014/03/how-to-add-pre-receive-hook-in-gitlab.html 같은 방법이 있다고는 하지만 복잡해서 시도해 보진 않았다.) push 완료시에만 사용 가능하므로 push 후 CI 연계나 이메일 전송등 이벤트 알림으로 용도가 제한된다.

커밋 메시지 검사하여 push 거부등의 정책 강제화를 gitlab 에서 사용하려면 Enterprise Version 을 사용해야 한다. (http://doc.gitlab.com/ee/git_hooks/git_hooks.html)

 

웹 훅 설정

  1. Settings -> Web Hooks 메뉴에 들어간다.
     
  2. URL 을 입력하고 "Add Web Hook" 을 클릭한다.

 

gitlab push 시 젠킨스 빌드

젠킨스의 빌드 트리거중 "빌드를 원격으로 유발 (예: 스크립트 사용)" 를 설정하면 gitlab 에 푸시될 경우 원격에서 빌드가 가능하다.

프로젝트 이름이 hello-webapp 일 경우 빌드 url 은 다음과 같이 구성된다.

 

http://jenkins.example.com/job/hello-webapp/build?token=build_token
  • build_token : 원격 빌드시 필요한 인증 토큰

인증 정보가 필요하면 Host 명 앞에 넣어주면 된다. (참고: URI 스킴 - http://en.wikipedia.org/wiki/URI_scheme#Examples)

http://username:password@jenkins.example.com/job/hello-webapp/build?token=build_token

 

 

Ref