본문 바로가기

DevOps

[Jenkins] Spring Boot Application 배포 자동화 (1)

Jenkins 자동화 실현하기

개발 프로젝트를 관리하는 과정에서 저는 반복되는 배포와 디버깅 작업이 얼마나 시간을 소모하고 생산성을 저해하는지 직면했습니다. CI/CD와 Jenkins 자동화 도구로 자동 배포를 해보려고 합니다. 이 글에서는 CI/CD의 개념을 이해하고, Jenkins의 소개 및 설치 과정을 제 개인적 경험을 통해 공유하고자 합니다.

CI/CD의 이해
CI/CD는 개발의 모든 단계를 자동화하여 애플리케이션을 사용자에게 빈번하고 효율적으로 배포하는 프로세스입니다.
Continuous Integration (CI)
CI, 즉 지속적 통합은 개발 과정에서 발생하는 코드 변경사항을 주기적으로 빌드 및 테스트하여 레포지토리에 통합하는 것을 의미합니다.
Continuous Delivery/Deployment (CD)
CD는 Continuous Delivery와 Continuous Deployment를 모두 포함하며, CI의 빌드와 테스트가 완료된 후 코드를 자동으로 릴리스하거나 프로덕션 환경에 배포하는 과정입니다.

1. Jenkins 설치

Jenkins 에서 서버 운영체제에 맞게 설치했습니다.

2. Freestyle 프로젝트 생성

Dashboard - 새로운 Item 원하는 이름으로 Freestyle 프로젝트 생성합니다.

3. Configure 작성

소스 코드 관리

프로젝트를 빌드하고 배포하기 위해선 프로젝트 소스가 있는 Repository를 연동합니다.

 

1. Repositories 등록

프로젝트 소스가 있는 Git 주소와 주소에 접속할 수 있는 계정정보를 입력합니다.

Credentials 정보는 Dashboard - Jenkins 관리 - Security - Credentials 탭에서 등록할 수 있습니다.

+Add Credentials 클릭

  • 등록하는 방법은 여러가지가 있는데 Username with password 방법 등록했습니다.
  • 원하는 ID를 설정해주면 된다. (ID를 설정하지 않으면 랜덤으로 생성됩니다.)

2. Branches to Build 등록

소스 코드 관리 탭으로 이동해서 Credentials 을 선택했다. 후에 Branches to build 에서 빌드하고 싶은 Branch 입력하면 됩니다.

빌드 유발

1. Poll SCM

Poll SCM을 사용해서 빌드 유발 설정했습니다.

분당 5분 간격으로, 매주 월요일부터 금요일까지 아침 9시부터 오후 6시까지 실행되고, 기준은 시스템의 시간대가 아닌 Asia/Seoul 시간대로 설정했습니다.

Poll SCM?
Poll SCM은 일정한 주기(예: 매분)마다 소스 코드 저장소(Git, SVN 등)를 폴링하여 변경 사항을 감지합니다.

Build Steps

1. Invoke Gradle script

Gradle을 빌드하기 위해서는 Plugin을 설치해야 합니다. Dashboard - Jenkins 관리 - Tools 탭으로 이동하면 Gradle installations 에서 Gradle 버전을 선택할 수 있습니다. 원하는 버전과 이름을 선택했습니다.

다시 Configure 이동 한 후 설치했던 Gradle을 선택하고 Tasks를 작성해주면 됩니다.

빌드 후 조치

1. Send build artifacts over SSH

서버에 접속해서 빌드한 .jar 파일을 복사 후 배포할 예정입니다. 서버에 접속하기 위해서 SSH Server을 System Configuration에 Publish over SSH을 등록해주어야 합니다.

 

2. Transfers Set

등록한 서버를 선택 후 Jenkins 서버에서 어떤 파일을 접속한 서버에 옮길 것인지 선택을 해주고 어떤 명령어를 실행할 지 작성해야 합니다.

.jar 파일을 원하는 디렉토리에 복사 후 .jar 파일을 실행 시켜 주었습니다.

Pipeline 작성하기

Free Style로 작성한 구성을 코드로 관리할 수 있는 Pipeline으로 작성해보려고 합니다.

Pipeline으로 작성하게 되면 다양한 이점을 가져올 수 있습니다.

Pipeline이 무엇이고 어떤 이점이 있는지 다음 글에서 알아봅시다.