CI/CD

Jenkins Webhook 연동

uuuhhh 2022. 12. 12. 09:41

📌 목표


  • Github의 Webhook을 구성하고 Jenkins와 연동 후에 Push Event 발생 시 자동으로 빌드가 진행되도록 해보자 !

 

 

▪ Github Webhook 구성


  • Github Access Token 생성

 

  • Github Repository - Setting - Webhooks - Add Webhook

 

  • Payload URL
    • 젠킨스 URL + /github-webhook/
    • 외부에서 접근 가능한 도메인으로만 동작 가능 → ngrok 서비스 이용
    • e.g.) http://jenkins.com/github-webhook/
  • Content Type
    • application/json

 

 

▪ Jenkins Credential 등록 및 관리


  • Jenkins - Manage Credentials

 

  • Credential 등록

 

  • Username
    • Github Username 입력
  • Password
    • Github Access Token 입력

 

  • 생성 완료 !

 

 

▪ Jenkins Pipeline 프로젝트 구성


  • Pipeline 프로젝트 생성

 

  • Push Event를 감지할 깃허브 레포 정보 입력
    • Github project 체크
    • GitHub hook trigger for GITScm polling 체크

 

  • Declarative 방식으로 파이프라인 작성
    • agent
      • pipeline 최상단에 위치하며 특정 job들을 수행할 agent
      • 대표적으로 node, docker, kubernetes를 parameter로 포함
    • stages
      • 해당 pipeline이 동작할 때, 실행되는 단계를 의미
      • 하나 이상의 stage를 정의
      • stage 내부적으로 steps를 정의
    • environment
      • pipeline 내부에서 key-value 형태로 사용할 수 있는 환경 변수
    • parameters
      • pipeline 내부에서 특정 노드, 컨테이너를 실행시킬 때 변수를 제공해야 할 경우 사용
pipeline {
    agent ansy
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    credentialsId: 'github-repo-access-token',
                    url: '<https://github.com/Cucumber-web/Test-Webhook.git>'
            }
        }
    }
}

 

  • Webhook 트리거를 통해 빌드 작업을 자동화하기 위해서는 최초 빌드를 실행시켜줘야 한다.

 

  • 최초 빌드 성공 !

 

 

▪ Github Webhook Trigger 발생 후 빌드 자동화 작업


  • 앞서 설정한 레포에 간단하게 push event를 발생시켜보자

 

  • 자동으로 빌드가 시작된다 !!!!

 

  • 파드 로그를 살펴보면 Github Repo에서 PushEvent를 받아온 후
    • 빌드 agent 파드를 생성 !
    • 빌드 작업을 마치고 !
    • 빌드 agent 파드를 종료하고 삭제 !

 

 

ref.


젠킨스(Jenkins) GitHub Webhooks 연동

Pipeline Syntax