Generic WebHook Trigger 를 설정하게 된 배경❓
이러한 구조로 개발이 되다보니, 만약에 백엔드 코드를 수정 후 develop 브랜치에 Merge 시 젠킨스에서는 백엔드와 프론트엔드 파이프라인이 동시에 실행되는 문제가 발생하였다.
이 문제를 해결하기 위해 알아보던 중 Generic WebHook Trigger 에 대해 알게되어 적용하게 되었다.
설정하는 방법 🧐
1. 젠킨스 대시보드에서 Generic WebHook Trigger 플러그인을 설치 한다.
2. 깃허브에서 Generic WebHook Trigger 를 위한 설정을 아래 단계로 진행한다.
1) 깃허브 레포지토리에서 Settings - Webhooks를 클릭한다.
2) Payload URL
➡ http://공인IP URL:포트번호/generic-webhook-trigger/invoke?token=token
➡ 공인IP URL과 포트번호만 변경하고, 나머지는 다 동일하게 작성한다.
3) Content type : application/json
으로 선택한다.
4) Send me everything
을 선택한다.
3. 젠킨스 파이프라인의 구성에서 설정을 아래 단계로 진행한다.
1) Build Triggers에서 "Generic Webhook Trigger" 를 선택한다.
2) param 추가를 클릭하여 아래와 같이 3개를 추가해준다.
➡ Merge 가 됬는지 여부를 확인하기 위한 조건이다. / $.pull_request.merged
➡ 라벨(Label) 이름을 확인하기 위한 조건이다. / $.pull_request.labels..name
➡ 브랜치명을 확인하기 위한 조건이다. / $.pull_request.base.ref
3) Token에는 그냥 token
이라고 입력해준다.
4) 해당 파이프라인에서 어떠한 조건일때 동작시킬 지 입력해준다.
➡ 나는 develop 브랜치에 backend를 포함하는 라벨이 Merge 됬을때 트리거가
발동되도록 설정하였다.
➡ Expression : (?=.*true)(?=.*develop)(?=.*backend.*).*
➡ Text : $MERGED $REF $LABEL
여기까지 하면 모든 설정이 끝난다.
이제 깃허브에서 develop 브랜치에 "backend" 라벨을 달고 Merge 시 해당 설정을 한 백엔드 파이프라인만 실행이 될 것이다.