가이드 / Jenkins

젠킨스 정기 잡이 안 돌거나 실패하면 알림 받기

젠킨스에도 메일·슬랙 알림 플러그인이 있죠. 그런데 그 알림들엔 공통의 맹점이 있습니다 — 젠킨스가 보내는 알림이라서, 젠킨스 자체가 죽으면 알림도 같이 죽습니다.서버가 내려갔거나, 빌드 큐가 멈췄거나, 스케줄 설정이 꼬여서 잡이 아예 실행되지 않은 날엔 “실패 알림”조차 오지 않아요.

해법은 방향을 뒤집는 겁니다. 젠킨스가 성공할 때마다 외부 모니터링에 “나 방금 성공했어”라는 신호(ping)를 보내고, 신호가 제때 안 오면 외부에서 알림을 쏘는 것. 이러면 실패든, 무실행이든, 젠킨스 사망이든 전부 잡힙니다.

1. 모니터 만들기 (30초)

BatchWatch에 무료 가입하고 “배치/크론 감시” 모니터를 만듭니다. 실행 주기는 젠킨스 스케줄과 맞추고 — 예: 매일 새벽 4시 — 허용 지연은 빌드 소요 시간보다 넉넉하게(예: 30분) 잡으세요. 젠킨스의 H 4 * * *는 4시 정각이 아니라 4시대의 임의 분에 돌므로, 허용 지연에 그만큼 여유를 더 주면 됩니다. 만들면 고유 Ping URL이 발급됩니다.

2-A. 파이프라인 잡이면 — post 블록

Jenkinsfile
pipeline {
  agent any
  triggers { cron('H 4 * * *') }  // 매일 새벽 4시대 실행

  stages {
    stage('Build') { steps { sh './run-batch.sh' } }
  }

  post {
    success { sh 'curl -fsS --retry 3 --retry-connrefused https://batch.hkch.co.kr/p/YOUR_TOKEN' }
    failure { sh 'curl -fsS --retry 3 --retry-connrefused https://batch.hkch.co.kr/p/YOUR_TOKEN/fail' }
  }
}

success의 ping은 “정상 실행” 신고이고, failure의 /fail은 즉시 실패 알림을 쏘는 엔드포인트입니다. 잡이 실패하면 허용 지연을 기다리지 않고 바로 디스코드·슬랙·텔레그램으로 알림이 갑니다.

2-B. Freestyle 잡이면 — 빌드 후 조치

제일 간단한 방법은 빌드 스텝 마지막에 한 줄 추가하는 겁니다 (셸 스텝은 앞 명령이 실패하면 거기서 멈추므로, 마지막 줄까지 왔다 = 성공):

Execute shell (마지막 줄)
./run-batch.sh
curl -fsS --retry 3 --retry-connrefused https://batch.hkch.co.kr/p/YOUR_TOKEN

실패 즉시 알림까지 원하면 Post-build Actions → Post build task 플러그인으로 빌드 실패 시 curl -fsS …/fail을 호출하게 하면 됩니다 (플러그인이 없다면 생략해도 좋아요 — 누락 감지가 어차피 잡아줍니다).

3. 이제 뭐가 잡히나

한 가지 솔직한 한계

이 방식은 정기 스케줄 잡용입니다. 커밋 트리거나 수동 실행으로만 도는 잡은 “예정 시각”이 없어서 누락 감지가 성립하지 않아요. 그런 잡은 젠킨스 내장 알림을 그대로 쓰시는 게 맞습니다.

젠킨스 노드가 도는 서버의 크론도 함께 감시하고 싶다면 Linux cron 가이드를, 스케줄 표현식이 헷갈린다면 cron 표현식 정리를 참고하세요.

젠킨스가 죽어도 알림은 살아있게

구글 계정으로 3초 가입 · 모니터 3개 무료 · 카드 등록 없음

무료로 시작하기 →