4.4. Jenkins 로 빌드·배포
어떨 때 쓰는가
- 빌드와 배포를 하나로 묶어 실행할 때
- 실행 이력과 승인 절차가 필요할 때
- Blue-Green 이나 롤백처럼 정해진 배포 방식을 쓸 때
- 새 애플리케이션의 빌드·배포 구성을 한 번에 만들 때
Jenkins 란
여러 단계를 순서대로 실행하고 그 이력을 남기는 도구 입니다. 빌드 자동화 서버라고도 부릅니다.
Jenkins 에서 하나의 작업 단위를 Job 이라고 합니다. Job 을 실행하면 정해진 단계가 차례로 돌고, 실행할 때마다 번호가 붙어 기록이 남습니다.
Console 빌드와 무엇이 다른가
| Console (4.2 장) | Jenkins | |
|---|---|---|
| 다루는 범위 | 빌드 → 배포 | 빌드 → 배포 → 검증 → 알림까지 |
| 실행 조건 | 버튼을 눌렀을 때 | 버튼, 시각, 소스 변경 등 |
| 승인 단계 | 없습니다 | 넣을 수 있습니다 |
| 배포 방식 | 롤링 업데이트 | Blue-Green, 카나리 등 |
| 이력 | 빌드별로 남습니다 | Job 실행별로 남고 오래 보관합니다 |
| 준비 | 화면에서 바로 | Job 을 미리 만들어 둡니다 |
둘 다 결과는 같은 이미지입니다. 절차가 단순하면 Console 이 빠르고, 절차가 정해져 있고 되풀이한다면 Jenkins 가 낫습니다.
Jenkins 접속
브라우저에서 Jenkins 주소를 엽니다. 주소는 설치 담당자에게 확인하거나 Console 의 도구 메뉴에서 이동합니다(9.3 장).
Console 과 같은 통합 인증을 쓰므로, Console 에 이미 로그인했다면 별도 입력 없이 들어갑니다.
Job 목록
접속하면 등록된 Job 목록이 나옵니다.

전자정부 샘플용으로 미리 만들어 둔 Job 은 다음과 같습니다.
| Job | 하는 일 |
|---|---|
00-NEW-PROJECT | 새 애플리 케이션의 빌드·배포 Job 을 한 번에 만듭니다 |
10-egov-helm-install | Helm 차트로 처음 설치합니다 (9.1 장) |
20-egov-build | 소스를 S2I 로 빌드하고 이미지를 레지스트리에 올립니다 |
30-egov-deploy | 만든 이미지를 클러스터에 배포합니다 |
40-egov-rollback | 이전 버전으로 되돌립니다 |
50-egov-blue-green | Blue-Green 방식으로 전환합니다 |
60-egov-hpa | 자동 확장을 적용한 배포를 실행합니다 (3.5 장) |
70-egov-argocd-deploy | ArgoCD 를 거쳐 배포합니다 |
99-egov-helm-uninstall | 설치한 것을 지웁니다 |
앞의 번호는 실행 순서를 뜻합니다. 처음 설치할 때는 10 → 20 → 30 순으로 진행합니다.
각 줄의 왼쪽 표시는 마지막 실행 결과입니다. 초록 확인 표시는 성공, 빨강은 실패입니다. 오른쪽 끝의 실행 버튼을 누르면 곧바로 실행됩니다.
신규 프로젝트 만들기
새 애플리케이션을 추가할 때는 00-NEW-PROJECT Job 을 실행합니다.

입력 항목은 다음 과 같습니다.
| 항목 | 설명 | 예시 |
|---|---|---|
| NAMESPACE | 배포할 네임스페이스. 없으면 새로 만듭니다 | egov |
| DEPLOYMENT | 애플리케이션 배포 이름 | homepage |
| GIT_URL | 빌드할 소스의 Git 저장소 주소 | http://gitlab.../app.git |
| BASE_IMAGE | S2I 빌드와 실행에 쓸 기반 이미지 | openjdk17, tomcat9 |
| HOST | 외부 접속 주소 | homepage-egov.apps... |
| NEXUS_URL | 내부 라이브러리 저장소 주소 | http://nexus...:8081 |
빌드 도구는 Maven 과 Gradle 을 지원합니다.
실행하면 다음이 자동으로 만들어집니다.
| 구분 | 만들어지는 것 |
|---|---|
| Kubernetes | Namespace, Deployment, Service, Ingress |
| Jenkins | 그 애플리케이션 전용 빌드 Job, 배포 Job |
한 번만 실행하면 됩니다. 이후로는 만들어진 빌드·배포 Job 을 씁니다.
만들어진 자원은 Console 의 토폴로지 화면에서 연결 관계를 확인할 수 있습니다(2.2 장).
빌드 Job 실행
20-egov-build 를 누르고 실행합니다.

실행하 면 다음 순서로 진행됩니다.
- Git 저장소에서 소스를 최신으로 받습니다.
- S2I 로 컴파일하고 컨테이너 이미지를 만듭니다.
- 이미지를 레지스트리(Harbor)에 올립니다.
왼쪽 아래 빌드 기록 에서 실행 번호를 누르면 콘솔 출력(로그)을 볼 수 있습니다. 진행 중인 빌드는 실시간으로 이어집니다.
실패한 실행은 빨간 표시가 남습니다. 그 번호를 눌러 로그의 마지막 부분을 보십시오.
배포 Job 실행
빌드가 끝나면 30-egov-deploy 를 실행합니다.

배포 Job 은 올라간 이미지를 클러스터의 Deployment 에 적용하고, 새 파드가 정상적으로 뜰 때까지 기다립니다. 파드가 뜨지 않으면 Job 도 실패로 끝나므로, 배포가 성공했는지 Job 결과만 보면 됩니다.
배포 방식 고르기
| Job | 방식 | 특징 |
|---|---|---|
30-egov-deploy | 롤링 업데이트 | 하나씩 교체합니다. 기본 |
50-egov-blue-green | Blue-Green | 새 버전을 먼저 다 띄우고 트래픽을 한 번에 옮깁니다 |
70-egov-argocd-deploy | GitOps | Git 저장소의 정의를 기준으로 배포합니다 |
Blue-Green 은 전환 중에 서비스가 끊기지 않고, 문제가 생기면 즉시 되돌릴 수 있습니다. 대신 배포 중에 자원이 두 배 필요합니다.
배포 결과 확인
배포가 끝나면 Console 에서 확인합니다.
| 확인할 것 | 어디에서 |
|---|---|
| 파드가 떴는지 | 워크로드 > Pod (3.1 장) |
| 복제본 수가 맞는지 | 워크로드 > 배포 (3.2 장) |
| 배포된 이미지 태그 | 배포 상세의 컨테이너 |
| 외부 접속 주소 | 네트워킹 > 인그레스 (5.1 장) |
| 자원 연결 관계 | 토폴로지 (2.2 장) |
Ingress 에 표시된 주소를 브라우저에서 열어 애플리케이션이 응답하는지 확인하십시오.
되돌리기
되돌리는 방법이 두 가지입니다.
| 방법 | 특징 |
|---|---|
40-egov-rollback Job | Jenkins 이력에 되돌린 기록이 남습니다 |
| Console 의 배포 히스토리 | 화면에서 리비전을 골라 되돌립니다 (3.2 장) |
Jenkins 로 배포했다면 Jenkins 로 되돌리는 편이 좋습니다. 이력이 한곳에 모여 나중에 무슨 일이 있었는지 추적하기 쉽습니다.
급할 때는 Console 이 빠릅니다. 다만 Jenkins 이력에는 그 되돌림이 남지 않으므로, 나중에 Jenkins 로 다시 배포하면 되돌리기 전 상태로 돌아갈 수 있습니다.