Skip to content

[INFRA] 4. 깃허브 PR 라벨을 기준으로 젠킨스 빌드하기

JFe edited this page Aug 8, 2023 · 1 revision

0. 배경

지금까지 펀잇팀은 Jenkins로 CI/CD 파이프라인을 구축했고,
GitHub hook trigger for GITScm polling을 통해 develop 브랜치에 push 되면 빌드 트리거를 발생시키도록 구성했다.

하지만 BE, FE 모두 하나의 레포지토리에 존재하고 같은 방식으로 구성되어 있어서 하나의 PR이 merge 되어도 두 개의 파이프라인에 동시에 트리거가 발생한다는 문제점이 있었다.
이런 필요없는 동작을 없애기 위해 목적에 맞게 파이프라인이 각각 따로 동작하도록 분리할 필요성이 생겼고, PR 라벨(BE or FE)을 통해 트리거를 분리하기로 결정했다.

1. Generic Webhook Trigger 플러그인

Generic Webhook Trigger Plugin 설치

PR 라벨을 기준으로 트리거를 발생시키기 위해 Github의 Webhook 데이터를 추출할 수 있어야 한다.
이를 위해 Generic Webhook Trigger 젠킨스 플러그인을 설치하자.

해당 플러그인을 사용하면 http://JENKINS_URL/generic-webhook-trigger/invoke로 오는 요청에 대해
JSON or XML 형태로 데이터를 추출하여 원하는 조건으로 트리거를 발생시킬 수 있다.

2. Github Webhook 설정

깃허브 webhook

깃허브 레포지토리에서 Settings - Code and automation - Webhooks 탭으로 오면
Add webhook을 통해 새로운 Webhook 설정을 추가할 수 있다.

webhook 추가
  • Payload URL : http://JENKINS_URL/generic-webhook-trigger/invoke
  • Content type : application/json
  • Trigger event 설정 : Send me everything

Webhook으로 오는 요청에 대해 데이터를 추출하기 위해 모든 정보를 JSON 형태로 받도록 위와 같이 설정하고 추가해주자.

3. 젠킨스 Build Trigger 설정

젠킨스 build trigger 설정

이제 젠킨스로 돌아와서 트리거 설정을 하고 싶은 아이템의 구성 - Build Trigger로 들어와서
위와 같이 기존 GitHub hook trigger for GITScm polling을 해제하고, Generic WebHook Triggers를 설정하자.

다음으로 Post content parameters 탭에서 추가 버튼을 눌러서 변수를 추가할 수 있다.

IS_MERGED 파라미터
  • Variable : 변수 이름
  • Expression : $.pull_request.merged (PR merge 여부)
BRANCH 파라미터
  • Variable : 변수 이름
  • Expression : $.pull_request.base.ref (base 브랜치 이름)
LABELS 파라미터
  • Variable : 변수 이름
  • Expression : $.pull_request.labels..name (PR 라벨 이름들)

이후 Optional filter 탭에서 트리거를 유발시키기 위한 조건을 설정할 수 있다.

Optional filter 추가

Expression에서 원하는 조건의 표현식을 작성하고, Text에서 해당하는 변수를 지정할 수 있다.

위의 표현식은 PR이 merge가 되었고, develop 브랜치면서, 라벨에 BE가 있는 경우를 의미한다.

4. Token 및 Credentials 설정

webhook token 설정

Token 탭에서 Webhook에 대한 토큰을 설정할 수 있다.

그러려면 원하는 토큰 명을 작성하고, 아래에서 젠킨스 Credentials를 추가해줘야 한다.

Credentials 추가
  • Kind : Secret Text
  • Secret : Token 탭에 작성한 토큰 명
  • Id : Credentials 구분을 위한 이름
  • Description : Credentials 설명
깃허브 webhook URL 토큰 추가

마지막으로 다시 깃허브 Webhook 설정으로 돌아가서 URL 뒤에 토큰을 추가해주면 된다.

?token=여기에_아까_Token_탭에서_작성한_토큰_명


Posted By 망고

🔐 공통

🔑 프론트엔드

🔒 백엔드

📝 회의록

🤩 데모데이

Clone this wiki locally