젠킨스 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 없이 “즉시 빌드”가 됩니다.
-
Jenkins → Job → Configure → Build Triggers
-
빌드를 원격으로 유발체크 → Token 생성 -
(브랜치 고정 시) SCM 브랜치
*/develop
-
-
.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이 “아무것도 커밋/푸시 안 함”이라면, 최소 변경으로 값 한 줄 갱신 후 커밋/푸시만 추가하시면 됩니다.
-
추천 시나리오 (권한 없는 현재 상황 기준)
-
즉시: A안(Poll SCM
H/1 * * * *) 적용 → develop 푸시 후 최대 1분 내 자동 빌드. -
가능하면: B안(.gitlab-ci.yml에 curl 한 줄)로 “푸시 즉시” 전환.
-
장기: C안(오너에게 notifyCommit 웹훅 추가 요청)으로 안정화.
댓글
첫 번째 댓글을 남겨보세요.