github-webhook 방법 보다는 token을 이용한 generic-webhook-tigger를 추천한다. 이유는 webhook 걸려는 git 프로젝트가 하나 이상의 젠킨스 프로젝트에 설정되있을 경우 모두 webhook이 걸려버린다. 가령 나는 젠킨스의 A 프로젝트만 webhook 걸려고 하는데 B 프로젝트에서도 같은 git 프로젝트가 설정되있으면 A, B모두 webhook이 걸린다. 따라서 내가 원하는 젠킨스 프로젝트만 webhook을 걸려면 generic-webhook-trigger를 이용하면 된다.
1. Github 설정
- Github 우측 상단 아이콘을 클릭하고 Settings 클릭
- 좌측 메뉴에서 Development settings -> Personal access tokens -> Generate new token 클릭
- 범위 선택
- Access Token 생성 완료 (편집기에 저장)
2. Jenkins 설정
- 프로젝트 -> Build Triggers -> Generic Webhook Trigger 체크박스에 체크
- Post Content parameters (Webhook을 통해 넘어온 데이터에서 사용할 값 설정)
- Variable : Ref
- branch 정보가 담겨있는 ref값을 저장하기 위해 variable에 ref를 입력
- Expression : $.ref
- JSONPath 선택
- Variable : Ref
- Token
- Github에서 발급한 Access Token 입력
- Optional filter
- Expression : ^(refs/heads/master)
- master 브랜치를 의미
- Text : $ref
- Expression : ^(refs/heads/master)
3. Github Webhook 설정
- 해당 Repository -> Settings -> Webhooks -> Add webhook
- Payload URL
- http://JENKINS_URL/generic-webhook-trigger/invoke?token=TOKEN
- Content Type : application/json
- Active 체크
- 연결 확인