Jenkins Job 및 Build 단계 상세 설정

Jenkins Job 및 Build 단계 상세 설정

8️⃣ Jenkins Job 및 Build 단계 상세 설정

1. Build Step (Shell Script, Gradle, Maven, Makefile 등)

Jenkins에서 Build Step은 빌드 프로세스 중에 실행될 구체적인 명령을 정의하는 단계입니다. Jenkins는 다양한 빌드 툴 및 방법을 지원하여, 다양한 환경에서 빌드를 자동화할 수 있습니다.

1.1. Shell Script

Jenkins의 가장 기본적인 빌드 단계는 Shell Script를 실행하는 것입니다. 이 방법은 유닉스 계열 시스템에서 자주 사용됩니다. 예를 들어, 간단한 쉘 명령을 실행하여 빌드를 처리할 수 있습니다.

#!/bin/bash
echo "Hello, Jenkins!"

Jenkins에서 Execute shell을 선택하고 위의 쉘 스크립트를 입력하면 빌드가 실행됩니다.

1.2. Gradle 빌드

Gradle은 Java 프로젝트를 위한 빌드 툴입니다. Jenkins에서 Gradle을 사용하려면 Gradle Plugin을 설치하고, 아래와 같이 빌드를 설정할 수 있습니다.

gradle build

1.3. Maven 빌드

Maven은 또 다른 Java 기반 빌드 툴로, Maven을 사용하는 프로젝트는 Jenkins에서 다음과 같이 설정할 수 있습니다.

mvn clean install

1.4. Makefile 빌드

Makefile을 사용하여 C/C++ 프로젝트나 다른 언어의 빌드를 관리하는 방법입니다. make 명령어를 사용하여 빌드를 실행할 수 있습니다.

make

그림: Jenkins에서의 다양한 Build Step

Jenkins Build Steps

2. Build Trigger (SCM Polling, Webhook, Timer, Upstream)

Build Trigger는 빌드를 자동으로 트리거하는 조건을 설정하는 기능입니다. 여러 가지 트리거 옵션을 통해 다양한 방식으로 빌드를 자동화할 수 있습니다.

2.1. SCM Polling

SCM Polling은 Git, SVN 등 소스 코드 관리 시스템의 변경 사항을 주기적으로 확인하여 빌드를 트리거하는 방법입니다. 이를 통해 소스 코드가 변경되었을 때 자동으로 빌드를 실행할 수 있습니다.

pollSCM('* * * * *')

위 예시는 매 분마다 소스 코드 변경 여부를 확인하여 빌드를 트리거합니다.

2.2. Webhook

Webhook은 GitHub, GitLab, Bitbucket 등 외부 Git 서비스에서 코드 변경이 발생하면 Jenkins에게 알리는 방식입니다. Webhook을 설정하면 소스 코드가 푸시될 때마다 Jenkins가 자동으로 빌드를 실행합니다.

2.3. Timer

Timer는 일정 시간 간격으로 빌드를 트리거하는 방법입니다. 예를 들어, 매일 정해진 시간에 빌드를 실행할 수 있습니다.

H 12 * * 1-5

위의 예시는 매주 월요일부터 금요일까지, 매일 오후 12시에 빌드를 실행하는 스케줄입니다.

2.4. Upstream

Upstream 트리거는 다른 Job이 성공적으로 완료되었을 때 해당 Job을 실행하는 방식입니다. 예를 들어, 빌드가 완료된 후 배포 Job을 트리거할 수 있습니다.

그림: Jenkins Build Trigger 설정 화면

Jenkins Build Trigger

3. Post-build Actions (Artifact 저장, Email Notification, Slack 연동)

Post-build Actions는 빌드가 완료된 후 실행할 작업을 설정하는 기능입니다. 빌드가 완료되면 다양한 후속 작업을 정의할 수 있습니다.

3.1. Artifact 저장

빌드 후 생성된 파일들을 Artifact로 저장할 수 있습니다. 이를 통해 빌드된 결과물을 저장하고 나중에 참조할 수 있습니다. 예를 들어, Maven으로 빌드한 .jar 파일을 저장할 수 있습니다.

archiveArtifacts '**/target/*.jar'

3.2. Email Notification

빌드 상태에 따라 이메일을 발송할 수 있습니다. 빌드가 성공하거나 실패할 때, 팀에게 이메일 알림을 보낼 수 있습니다.

emailext subject: 'Build Status: ${BUILD_STATUS}', body: 'The build has finished: ${BUILD_URL}'

3.3. Slack 연동

Jenkins와 Slack을 연동하여 빌드 상태를 Slack 채널에 전송할 수 있습니다. 이를 통해 팀원들이 실시간으로 빌드 상태를 확인할 수 있습니다.

slackSend channel: '#build-notifications', color: 'good', message: "Build #${BUILD_NUMBER} finished successfully!"

그림: Post-build Actions 설정 화면

Post-build Actions

4. Build Parameter 활용 (choice, string, password, boolean)

Build Parameters는 사용자가 빌드를 실행할 때 입력할 수 있는 매개변수입니다. Jenkins에서는 다양한 유형의 파라미터를 지원하여 빌드를 유연하게 제어할 수 있습니다.

4.1. Choice

Choice 파라미터를 사용하면 사용자가 선택할 수 있는 옵션을 제공할 수 있습니다. 예를 들어, 배포 환경을 선택하도록 할 수 있습니다.

choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'production'], description: 'Select the deployment environment')

4.2. String

String 파라미터를 사용하면 사용자가 문자열을 입력할 수 있습니다. 예를 들어, 버전 번호를 입력받는 경우입니다.

string(name: 'VERSION', defaultValue: '1.0.0', description: 'Enter the version to deploy')

4.3. Password

Password 파라미터는 민감한 정보를 입력할 때 사용됩니다. 예를 들어, 비밀번호를 입력받는 경우입니다.

password(name: 'PASSWORD', description: 'Enter the password')

4.4. Boolean

Boolean 파라미터는 참(True) 또는 거짓(False) 값을 선택하는 옵션입니다.

booleanParam(name: 'IS_PRODUCTION', defaultValue: false, description: 'Is this a production environment?')

그림: Jenkins Build Parameter 설정 화면

Build Parameter 설정

5. Build 상태 분석 (SUCCESS, FAILURE, UNSTABLE)

Jenkins에서는 빌드의 상태를 확인하여 각 상태에 따른 후속 작업을 정의할 수 있습니다. 주요 빌드 상태는 다음과 같습니다.

  • SUCCESS: 빌드가 성공적으로 완료됨
  • FAILURE: 빌드가 실패함
  • UNSTABLE: 빌드가 경고 상태로 종료됨 (예: 테스트 실패 등)

5.1. 빌드 상태에 따른 처리

Jenkins에서 빌드 상태에 따라 다른 작업을 수행할 수 있습니다. 예를 들어, 빌드가 실패한 경우 이메일 알림을 보내고, 성공한 경우 다음 단계로 진행하도록 설정할 수 있습니다.

post {
    success {
        echo 'Build succeeded!'
    }
    failure {
        echo 'Build failed!'
    }
    unstable {
        echo 'Build unstable!'
    }
}

그림: 빌드 상태 분석 화면

Build 상태 분석

6. Jenkins Artifacts 저장 및 활용

Artifacts는 빌드 후 생성된 결과물로, Jenkins에서는 이를 저장하고 나중에 활용할 수 있습니다. 예를 들어, 빌드 후 생성된 아티팩트를 저장하고, 다른 Job에서 이를 활용할 수 있습니다.

6.1. Artifacts 저장

빌드 후 아티팩트를 저장하려면 archiveArtifacts 명령어를 사용합니다. 예를 들어, Maven 빌드를 사용한 후 .jar 파일을 저장할 수 있습니다.

archiveArtifacts '**/target/*.jar'

6.2. Artifacts 활용

저장된 아티팩트를 다른 Job에서 사용할 수 있습니다. 예를 들어, 아티팩트를 다운로드하여 배포 작업을 수행할 수 있습니다.

copyArtifacts('Build-Job') {
    includePatterns('**/*.jar')
    target('builds/')
}

그림: Artifacts 저장 및 활용 화면

Artifacts 저장 및 활용


Jenkins는 매우 강력한 빌드 및 배포 자동화 툴로, 다양한 빌드 옵션과 후속 작업을 설정할 수 있습니다. Jenkins Job과 Build 단계를 잘 활용하면, 효율적이고 자동화된 CI/CD 파이프라인을 구축할 수 있습니다.

RSS Feed