Jenkins Trigger

최병훈·2024년 11월 8일
post-thumbnail

1)트리거

  • 빌드를 자동으로 시작하는 동작을 파이프라인 트리거라고 합니다.
  • 트리거의 유형
    • 외부 트리거
    • 폴링 SCM 트리거
    • 스케쥴 빌드 트리거
  • 외부 트리거

    • 노티파이어가 호출되면 젠킨스가 빌드를 시작하는 방식
    • 노티파이어의 역할을 할 수 있는 것은 다른 파이프라인 빌드나 SCM 시스템의 원격 스크립트
    깃허브(트리거) -> 젠킨스
  • 깃허브를 이용해서 젠킨스에 트리거

    • 젠킨스에 깃허브 플러그인을 설치
    • 젠킨스용 비밀키를 생성
    • 깃허브 webhook을 설정하고 젠킨스의 주소 와 키를 지정
  • 폴링 SCM 트리거
    • 젠킨스가 주기적으로 SCM을 호출하고 레포지토리에 푸시가 발생했는지를 체크가 빌드를 다시 하는 방식
    • 유용한 경우
      • 젠킨스가 SCM에서 접속할 수 없는 방화벽 네트워크 안에 있는 경우
      • 빌드 시간이 길고 커밋이 자주 발생해서 서버에 과부하가 초래되는 경우

2)Pull SCM Trigger

  • 프로젝트에 Jenkinsfile 을 생성

    pipeline {
        agent any
        stages {
            stage("Permission") {
                steps {
                    sh "chmod +x ./gradlew"
                }
            }
            stage("Compile") {
                steps {
                    sh "./gradlew compileJava"
                }
            }
            stage("Test") {
                steps {
                    sh "./gradlew test"
                }
            }
            stage("Test Code Coverage"){
                steps{
                    sh "./gradlew jacocoTestCoverageVerification"
                    sh "./gradlew jacocoTestReport"
                }
           }
        }
    }
  • 추가한 Jenkinsfile을 git push

    git add .
    git commit -m "Jenkinsfile added"
    git push
  • Jenkins pipeline 구성을 변경
    • Definition을 Pipeline script에서 Pipeline script from SCM으로 수정
    • SCM에서 git을 선택
    • Repository URL에 git hub URL을 설정
    • Branch 를 설정 후 저장
  • Build 를 수행하여 동작 확인
  • Jenkins pipeline 구성에서 Build Triggers 를 설정
    • Build Trigger를 Poll SCM 을 선택
    • Schedule 에 Cron Expression 으로 스케줄을 지정
      : Cron Expression 에 지정된 시간 ( H/5 * * * * : 매 5분) 마다,
      SCM 에 변경 사항을 확인하고, 만약 변경 사항이 생기면 Build 된다.
  • 코드를 수정한 후 GitHub에 push
    git add .
    git commit -m "code changed"
    git push
  • 5분이 지난 후 Jenkins 에서 빌드 확인
    Jenkins에서 GitHub commit의 변경을 감지하여 Build가 수행되었다.

3)Build periodically 옵션

  • 설정 방법은 Polling SCM 과 동일
  • 변경된 내용이 없어도 무조건 Build를 다시 수행
  • 커밋 파이프라인에서는 거의 사용하지 않고 밤에 실행되는 복잡한 통합 테스트에 사용

    코드의 변경이 없어도, 설정한 스케줄 대로 5분마다 build가 수행된다.

4)push가 발생했을 때 build

  • git hub에서 token 발급
    이 토큰을 Jenkins에 등록을 해서 연동

Jenkins 와 Git Hub 연결

  • [Dashboard] - [Jenkins 관리] - [System] 을 클릭하고
    화면을 하단으로 스크롤해서 Git Hub 항목에서 [Add GitHub Server]
  • 이름을 설정한 후 Credential 에서 [Add] - [Jenkins]를 선택
  • Domain은 그대로 두고 Kind를 Secret text로 변경한 후 ID에는 토큰 이름을 지정하고 Secret에는 토큰 값을 설정하고 Add를 클릭
  • Credential을 설정하고 Test connection을 수행 후 저장
  • Jenkins Item에서 트리거로 GitHub hook trigger for GITScm polling를 선택
  • pipeline 설정에서 [Credentials] - [Add]
  • GitHub 계정의 username과 password 에는 token 값을 입력하고 저장
  • 추가한 Credential을 설정하고 저장

GitHub webhook 추가

  • GitHub 레포지토리에서 webhook을 추가
  • Payload URL 입력
    http://{내 jenkins서버 접속 url}/github-webhook/
    http://43.201.7.217:8080//github-webhook/

코드 수정 및 push 후 webhook에 의해 빌드가 수행되는지 확인

  • IntellJ에서 코드 수정 후 GitHub에 push

    git add .
    git commit -m "code changed"
    git push
  • GitHub webhook에 의해 트리거되어 빌드가 수행된다.

0개의 댓글