PARA/02_Areas/A006_회사 업무/BOS-FE/bos-fe 배포 자동화/젠킨스 ci-cd 개선.md

젠킨스 ci-cd 개선

  • 현재 개발서버는 9시 13시 15시 18시에 자동으로 배포됨.
  • 그러나 나는 develop에 merge(push)되면 자동으로 배포하고싶음
  • 현재 stage view를 보면
    • scm
    • echo env
    • build app
    • compile
    • build image
    • revision
  • 를 하는중

젠킨스에서 revision까지 완료되면
아르고 CD에서 sync -> synchronize 를 해야 최종적으로 배포가 끝남.

이 작업은 너무나 번거로움

난 이 문제를 해결하고 싶음

젠킨스 Configuration 들어가보니

build triggers에 schedule란에
H 13,15,18 * * 1-5
라고 되어있음

build triggers에서 develop에 push된 것을 감지하고
자동으로 배포하게 할 수는 없나?

Build Triggers에는 현재

  • build after other projects are built
  • build periodcally(체크)
    • shcedule
  • github hook trigger for GITScm polling
  • Poll SCM
  • Quiet period
  • 빌드를 원격으로 유발(예:스크립트 사용)

이거밖에 없어

A. 지금 당장 가능한 해법 (권한 불필요)

Poll SCM로 가세요.

  • Jenkins → Job → Configure → Build Triggers

    • Build periodically 끄기

    • Poll SCM 체크 → 스케줄 H/1 * * * * (매 1분)

  • SCM 브랜치: */develop 지정

  • (옵션) 체크 비용 줄이기

    • Git → Shallow clone(depth 1) 활성화

    • Sparse checkout(필요시) / Reference repo(사내 미러) 사용

  • (옵션) Quiet period 10–30초 설정 → 짧은 시간 다수 커밋을 한 번의 빌드로 병합

장점: 바로 적용 가능, 추가 권한/플러그인 필요 없음
단점: 최대 1분 지연

B. GitLab 설정을 못 만질 때 쓰는 “우회 트리거”

Settings 권한이 없더라도 .gitlab-ci.yml은 수정 가능할 때가 많습니다.
develop에 머지되면 CI Job에서 Jenkins 원격 트리거 URL을 호출하게 하면, Webhook 없이 “즉시 빌드”가 됩니다.

  1. Jenkins → Job → Configure → Build Triggers

    • 빌드를 원격으로 유발 체크 → Token 생성

    • (브랜치 고정 시) SCM 브랜치 */develop

  2. .gitlab-ci.yml에 아주 작은 Job 추가(머지 시 실행):

trigger_jenkins_on_develop:
  stage: trigger
  rules:
    - if: '$CI_COMMIT_BRANCH == "develop"'
  script:
    - 'curl -sS -X POST "https://<jenkins-host>/job/<job-name>/build?token=<TOKEN>"'

장점: GitLab “Settings” 권한 없이도 가능(레포에 CI 수정 권한만 있으면 됨)
단점: CI 편집 권한이 필요, 실패 시 재시도 로직은 직접 추가해야 함

C. 최소 권한 요청 템플릿 (오너/메인터이너에게)

Settings 접근이 꼭 필요하다면, 아래 그대로 보내 요청하세요.

안녕하세요. develop 브랜치 푸시 시 Jenkins 빌드 자동 트리거를 위해
프로젝트 Webhook 추가가 필요합니다.

- URL: https://<jenkins-host>/git/notifyCommit?url=ssh://[email protected]/<group>/<repo>.git
- 이벤트: Push events
- Secret: (불필요)

notifyCommit는 Jenkins Git 플러그인 기본 엔드포인트라 별도 Jenkins 플러그인 설치가 필요 없습니다.
가능하시면 등록 부탁드립니다. 감사합니다.

이 방식은 플러그인 없이 푸시 즉시 Jenkins가 폴링을 트리거하므로, 딜레이 거의 0초입니다.

배포까지 “완전 자동” 되려면 (중요)

  • Argo CD는 automated: {}Git의 매니페스트 변경이 있어야 자동 배포합니다.

  • Jenkins의 revision 단계가 매니페스트(Helm/Kustomize)에서 image tag 등을 실제로 수정 → 커밋 → 푸시하고 있는지 꼭 확인하세요.

    • 이게 없다면 Argo가 감지할 변화가 없어, 여전히 수동 Sync를 눌러야 합니다.

    • 만약 현재 revision이 “아무것도 커밋/푸시 안 함”이라면, 최소 변경으로 값 한 줄 갱신 후 커밋/푸시만 추가하시면 됩니다.


추천 시나리오 (권한 없는 현재 상황 기준)

  1. 즉시: A안(Poll SCM H/1 * * * *) 적용 → develop 푸시 후 최대 1분 내 자동 빌드.

  2. 가능하면: B안(.gitlab-ci.yml에 curl 한 줄)로 “푸시 즉시” 전환.

  3. 장기: C안(오너에게 notifyCommit 웹훅 추가 요청)으로 안정화.

댓글

첫 번째 댓글을 남겨보세요.