DevOps, Infra

[Jenkins] 빌드 자동화 - polling

seulseul 2022. 12. 27. 19:53

Github Push만 처리 해도 Jenkins를 통해 자동 빌드 처리하는 방법은 Webhook 과 Polling 방식이 있다.
본문에서는 Polling 방식 을 설명한다.

 

  • Polling 이란?
    • 본인의 App에서 End-Point에 지속적으로 이벤트 발생 여부를 묻고 이에 대해 응답받는 형태
    • Git Repository에 변경사항이 있는지 특정 간격으로 물어보는 것

 

목차

 

     

    1. Item 생성

    • Multi branch Pipeline 선택
      • Pipeline 으로 Item 을 생성하여 polling 설정이 가능하나, git change 를 detect 하지 못하고 schedule 설정대로 polling 하는 단점이 있다.
      • Multi branch Pipeline 으로 Item을 생성할경우 사용자가 설정한 schedule 의 시간대로 주기적으로 polling 하면서, github 의 코드가 변경됐을 때 Jenkins job 이 시작된다.

     

    2. Project 설정

    2.1. Branch Sources

    • Branch Sources
      • Branch Sources → Add Source 본문에서는 Git Hub 선택 
      • Credentials : 앞서 추가한 Github Credential 추가 / Repository HTTPS URL : GitHub URL
      • Validate 버튼 클릭시 Credentials ok. Connected to <YOUR GIT URL> 메세지가 나오지않으면 Credential 정보와 Git URL 중 잘못된 정보가 있는것이다.

    2.2. Build Configuration

    • Build Configuration
      • Script Path 즉 Jenkinsfile이 위치하고 있는 파일의 경로와 이름

    2.3. Scan Repository Triggers

    • Scan Repository Triggers : pipeline 검증 주기
      • 최소 1분 ~

    3. UI 확인

    • Scan Repository Log : 리포지토리 Scan 로그를 볼수 있음

     

    4. Pipline 으로 Item 생성시

    Build Triggers
    젠킨스는 빌드 스케쥴을 설정할 때 cron syntax를 따른다.

    Poll SCM cron 작업 설정

    # 매시 5분마다
    5 * * * *
    
    # 1분마다
    H/1 * * * * 
    
    # 매일 오전 8시
    0 8 * * *

    Jenkins에서 사용되는 H 기호

    • H기호는 특정 범위 안에서 프로젝트 이름을 해시값으로 특정 값을 뽑아낸다.
    • H기호를 사용하는 이유는 Cron으로 실행되는 프로젝트가 모두 같은 시간에 시작되지 않게 하기 위해서 사용한다.
    • 해당 범위 안에서 결정되도록 설정(H(0,30) * * * * * ): 매시 0-30분 사이에 파이프라인 실행(ex. 매시 27분)
    • H값이 매번 변경되는건 아니다. 한번 결정되면 프로젝트내에서는 같은 값으로 유지 된다.
    • Jenkins에서는 작업은 분산하는 H 기호를 사용하기를 권장한다.

    'DevOps, Infra' 카테고리의 다른 글

    [Jenkins] 빌드 자동화 - webhook  (0) 2022.12.28
    [Jenkins] Jenkinsfile  (0) 2022.12.28
    [Jenkins] 플러그인 설치 및 준비  (0) 2022.12.27
    Git 브랜치 전략 3가지  (0) 2022.12.27
    [skaffold] Skaffold , kustomize with Spring Boot  (0) 2022.12.27