Jenkins 배포 정리

Adam·2024년 8월 20일
0

개발일지

목록 보기
10/15

회사에서 효율적인 CI/CD를 위해서 Jetbrains에서 나온 TeamCity, Github Action 그리고 Jenkins 중에 도입을 고려했는데, 서비스 중인 서버 중 한개의 가용 리소스가 많이 남아서, 설정이 비교적 앞의 2개 보다 어렵지만 제약 없이 무료로 사용할 수 있는 젠킨스를 도입하기로 결정하였다.
이에 따라 도입을 하면서 젠킨스 도입하면서 정리한 사항들을 올리려고 한다.

Jenkins란 무엇인가?

Jenkins는 오픈 소스 자동화 서버로, 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Delivery, CD)를 지원하는 도구입니다. Jenkins는 다양한 플러그인과의 연동을 통해 소프트웨어 개발의 전 과정을 자동화할 수 있으며, 빌드, 테스트, 배포 등의 작업을 효율적으로 관리할 수 있게 해줍니다. 개발자가 코드를 커밋할 때마다 Jenkins가 자동으로 코드를 빌드하고, 테스트하고, 특정 조건이 충족되면 배포까지 수행하는 파이프라인을 구축할 수 있습니다.

Jenkins의 주요 기능:

지속적 통합(CI): 개발자가 새로운 코드를 리포지토리에 푸시할 때마다 자동으로 빌드 및 테스트가 이루어져서 코드의 품질을 유지할 수 있습니다.

지속적 배포(CD): 성공적으로 빌드 및 테스트된 코드를 자동으로 프로덕션 환경에 배포하여 빠르고 안전하게 업데이트를 배포할 수 있습니다.

플러그인 확장성: Jenkins는 수천 개의 플러그인을 제공하여 거의 모든 도구 및 시스템과 연동할 수 있습니다.

Jenkins를 사용하여 GitHub 저장소의 develop 브랜치에 대한 CI/CD 설정하기

아래는 Jenkins를 설치하고, GitHub과 연동한 후, develop 브랜치에 대해 CI/CD 파이프라인을 설정하는 단계별 가이드입니다.

1. Jenkins 설치

Jenkins를 설치하는 방법은 운영체제에 따라 다를 수 있지만, 여기서는 Ubuntu 기준.

  1. Java 설치: Jenkins는 Java 기반 애플리케이션이므로 Java가 필요합니다.
sudo apt update
sudo apt install openjdk-11-jdk
  1. Jenkins 설치: 공식 Jenkins 저장소에서 Jenkins를 설치합니다.
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
  1. Jenkins 시작: Jenkins 서비스를 시작하고, 부팅 시 자동으로 시작되도록 설정합니다.
sudo systemctl start jenkins
sudo systemctl enable jenkins
  1. Jenkins에 접속: 웹 브라우저를 열고 http://your_server_ip:8080으로 접속합니다. 초기 관리자 비밀번호는 아래 명령어로 확인할 수 있습니다.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  1. 초기 설정: Jenkins에 로그인한 후, 제안된 플러그인을 설치하고 관리자 계정을 생성합니다.

2. GitHub 연동을 위한 플러그인 설치

  1. 플러그인 설치: Jenkins 대시보드에서 Manage Jenkins -> Manage Plugins로 이동합니다.

  2. GitHub 플러그인 설치: Available 탭에서 GitHub 플러그인을 검색하여 설치합니다.

  3. Jenkins 재시작: 플러그인 설치 후 Jenkins를 재시작합니다.

3. GitHub Webhook 설정

Jenkins가 GitHub 저장소의 변경 사항을 실시간으로 감지할 수 있도록 Webhook을 설정합니다.

  1. GitHub에서 Webhook 설정:

• GitHub 저장소로 이동하여 Settings -> Webhooks -> Add webhook을 클릭합니다.

• Payload URL에 Jenkins 서버의 URL을 입력합니다: http://your_server_ip:8080/github-webhook/

• Content type은 application/json으로 설정합니다.

• Which events would you like to trigger this webhook?에서 Just the push event.를 선택합니다.

• Add webhook 버튼을 눌러 Webhook을 생성합니다.

4. Jenkins Job 생성 및 설정

Jenkins에서 CI/CD 파이프라인을 설정하기 위해 Job을 생성합니다.

  1. Job 생성:

• Jenkins 대시보드에서 New Item을 클릭합니다.

• 프로젝트 이름을 입력하고, Pipeline을 선택한 후 OK를 클릭합니다.

  1. SCM 설정:

• Pipeline 탭에서 Definition을 Pipeline script from SCM으로 설정합니다.

• SCM을 Git으로 선택합니다.

• Repository URL에 GitHub 저장소의 URL을 입력합니다.

• Branches to build 섹션에 */develop을 입력하여 develop 브랜치에서만 빌드가 실행되도록 설정합니다.

• GitHub에 접근하기 위한 Credentials를 추가합니다.

5. Jenkinsfile 작성

GitHub 저장소의 루트 디렉토리에 Jenkinsfile을 생성하고 CI/CD 파이프라인을 정의합니다. 예를 들어:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                // 예시로 Maven을 사용한 빌드
                sh 'mvn clean install'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
                // 배포 스크립트 실행
                sh './deploy.sh'
            }
        }
    }
}

해당 Jenkinsfile은 간단한 3단계 파이프라인으로, 빌드, 테스트, 배포를 순차적으로 실행합니다.

6. Jenkins Job 실행 및 모니터링

모든 설정이 완료되면 Jenkins 대시보드에서 해당 Job을 선택하고 Build Now 버튼을 클릭하여 파이프라인을 실행할 수 있습니다.

빌드 로그 확인: 빌드 히스토리에서 빌드 상태를 확인할 수 있으며, 각 단계별로 로그를 확인할 수 있습니다.

자동 빌드 트리거: GitHub에 develop 브랜치로 푸시할 때마다 Jenkins가 자동으로 빌드를 트리거합니다.

이렇게 설정하면, GitHub의 develop 브랜치에 코드가 푸시될 때마다 Jenkins가 자동으로 빌드, 테스트, 배포 과정을 수행하게 됩니다. 이는 지속적 통합과 지속적 배포의 핵심 개념을 구현할 수 있다.

profile
Keep going하는 개발자

0개의 댓글