빌드 파라미터화 및 스크립트 사용

JenkinsBeginner
지금 연습하기

소개

현대의 CI/CD 파이프라인에서 유연성과 자동화는 핵심 요소입니다. 빌드 작업에 값을 하드코딩하면 경직되어 관리하기 어려워집니다. Jenkins 는 빌드를 파라미터화하고 빌드 프로세스의 일부로 스크립트를 실행하여 이러한 문제를 극복할 수 있도록 지원합니다.

본 랩에서는 유연한 Jenkins 작업을 생성하는 방법을 배웁니다. 먼저 빌드 시 사용자 입력을 허용하는 파라미터를 추가하는 것부터 시작합니다. 그런 다음, 빌드 단계로 셸 스크립트를 실행하고, 해당 스크립트에 파라미터를 전달하며, 빌드의 성공 또는 실패에 조건부로 응답하는 빌드 후 조치 (post-build actions) 를 구성하는 방법을 학습합니다. 이는 Jenkins 에서 강력하고 동적인 자동화 워크플로우를 생성하는 데 필수적인 기술입니다.

귀하의 환경에서는 이미 Jenkins 인스턴스가 실행 중입니다. 데스크톱에서 Firefox 브라우저를 열어 Jenkins 웹 인터페이스에 액세스할 수 있습니다. 브라우저는 자동으로 http://localhost:8080으로 열리므로 URL 을 수동으로 입력할 필요가 없습니다. 로그인도 필요하지 않습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 91%입니다.학습자들로부터 93%의 긍정적인 리뷰율을 받았습니다.

프리스타일 프로젝트 생성 및 파라미터화

이 단계에서는 새로운 Jenkins Freestyle 프로젝트를 생성하고 파라미터를 추가하는 방법을 배웁니다. 파라미터를 사용하면 빌드가 트리거될 때마다 입력을 제공할 수 있어 작업을 상호작용적으로 만들 수 있습니다.

먼저, 작업을 생성해 보겠습니다.

  1. 데스크톱 인터페이스에서 Firefox 브라우저를 엽니다. 브라우저는 자동으로 http://localhost:8080으로 열리므로 URL 을 수동으로 입력할 필요가 없습니다. 로그인도 필요하지 않습니다.
  2. Jenkins 대시보드에서 왼쪽 메뉴의 New Item을 클릭합니다.
  3. 항목 이름으로 parameterized-script-job을 입력합니다.
  4. Freestyle project를 선택하고 OK를 클릭합니다.
Jenkins dashboard New Item button

작업 구성 페이지로 이동됩니다. 이제 파라미터를 추가해 보겠습니다.

  1. General 섹션에서 This project is parameterized 확인란을 선택합니다.

    Jenkins job configuration page with parameters
  2. Add Parameter 드롭다운을 클릭하고 String Parameter를 선택합니다.

    • Name: GREETING_NAME
    • Default Value: World
    • Description: Enter a name to be greeted. (인사할 이름을 입력하세요.)
  3. Add Parameter 드롭다운을 다시 클릭하고 Choice Parameter를 선택합니다.

    • Name: ENVIRONMENT

    • Choices: (각 선택 항목을 새 줄에 입력합니다)

      DEV
      STAGING
      PROD
    • Description: Select the deployment environment. (배포 환경을 선택하세요.)

이 파라미터들은 이후 빌드 단계에서 사용할 수 있게 됩니다.

Jenkins job configuration page with parameters

마지막으로, 아래로 스크롤하여 Save를 클릭합니다. 작업의 메인 페이지로 리디렉션되며, 여기서는 "Build Now" 대신 Build with Parameters 옵션이 표시됩니다.

Build with Parameters

쉘 스크립트 빌드 단계 추가

이 단계에서는 작업의 빌드 프로세스에 셸 스크립트를 추가합니다. 이는 코드 컴파일, 테스트 실행 또는 애플리케이션 배포와 같은 작업을 수행하는 일반적인 방법입니다.

  1. Jenkins에서 parameterized-script-job 대시보드로 이동합니다.
  2. 왼쪽 메뉴에서 Configure를 클릭합니다.
  3. Build Steps 섹션까지 아래로 스크롤합니다.
  4. Add build step 드롭다운을 클릭하고 Execute shell을 선택합니다.
  5. Command 텍스트 영역에 다음 스크립트를 입력합니다. 이 스크립트는 Jenkins 작업 공간 내에 프로젝트 디렉터리 구조를 생성하고 그 내용을 나열합니다.
echo "--- Starting Build Step ---"
echo "Current directory:"
pwd
echo "Creating project directory structure:"
mkdir -p my-app
echo "Version 1.0" > my-app/version.txt
echo "Listing files in the project directory:"
ls -la my-app
echo "--- Build Step Finished ---"
Jenkins job configuration page showing build steps
  1. Save를 클릭하여 변경 사항을 적용합니다.

이제 작업을 실행하여 스크립트가 작동하는지 확인해 보겠습니다.

  1. 작업 페이지에서 Build with Parameters를 클릭합니다.
  2. 기본 파라미터 값은 그대로 두고 Build 버튼을 클릭합니다.
  3. 왼쪽의 Build History에 새 빌드가 나타납니다. 빌드 번호(예: #1)를 클릭합니다.
  4. 로그를 보려면 Console Output을 클릭합니다.

셸 스크립트에서 나온 출력(파일 목록 포함)을 볼 수 있어야 합니다.

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/parameterized-script-job
[parameterized-script-job] $ /bin/sh -xe /tmp/jenkins15539247300321029374.sh
+ echo --- Starting Build Step ---
--- Starting Build Step ---
+ echo Current directory:
Current directory:
+ pwd
/var/jenkins_home/workspace/parameterized-script-job
+ echo Creating project directory structure:
Creating project directory structure:
+ mkdir -p my-app
+ echo Version 1.0
+ echo Listing files in the project directory:
Listing files in the project directory:
+ ls -la my-app
total 12
drwxr-xr-x 2 jenkins jenkins 4096 Aug 22 01:56 .
drwxr-xr-x 3 jenkins jenkins 4096 Aug 22 01:56 ..
-rw-r--r-- 1 jenkins jenkins   12 Aug 22 01:56 version.txt
+ echo --- Build Step Finished ---
--- Build Step Finished ---
Finished: SUCCESS
Jenkins job console output

쉘 스크립트에 파라미터 전달

이 단계에서는 1 단계에서 정의한 파라미터를 쉘 스크립트 내에서 사용하는 방법을 배웁니다. Jenkins 는 빌드 파라미터를 환경 변수로 노출하며, 스크립트에서 $VARIABLE_NAME 구문을 사용하여 접근할 수 있습니다.

  1. parameterized-script-jobConfigure 페이지로 돌아갑니다.
  2. Build Steps 섹션으로 스크롤하여 Execute shell 명령 상자를 찾습니다.
  3. 기존 스크립트를 다음 스크립트로 바꿉니다.
echo "--- Starting Parameterized Build Step ---"
echo "Hello, $GREETING_NAME!"
echo "Deploying to the $ENVIRONMENT environment."

## Create project structure if not exists and read the version from the file
mkdir -p my-app
echo "Version 1.0" > my-app/version.txt
APP_VERSION=$(cat my-app/version.txt)
echo "Application version is: $APP_VERSION"
echo "--- Parameterized Build Step Finished ---"

echo 명령에서 $GREETING_NAME$ENVIRONMENT가 직접 사용되는 것을 확인합니다. 작업을 실행하면 Jenkins 가 사용자가 선택한 값으로 이를 대체합니다.

  1. Save를 클릭합니다.

이제 사용자 정의 파라미터로 빌드를 실행해 보겠습니다.

  1. Build with Parameters를 클릭합니다.
  2. GREETING_NAMELabEx로 변경합니다.
  3. ENVIRONMENT 드롭다운에서 STAGING을 선택합니다.
  4. Build를 클릭합니다.
  5. 새 빌드의 Console Output을 확인합니다.

출력은 제공한 사용자 정의 값을 반영해야 합니다.

Jenkins build console output showing parameterized script execution
--- Starting Parameterized Build Step ---
+ echo Hello, LabEx!
Hello, LabEx!
+ echo Deploying to the STAGING environment.
Deploying to the STAGING environment.
+ mkdir -p my-app
+ echo Version 1.0
+ cat my-app/version.txt
+ APP_VERSION=Version 1.0
+ echo Application version is: Version 1.0
Application version is: Version 1.0
+ echo --- Parameterized Build Step Finished ---
--- Parameterized Build Step Finished ---

조건부 단계로 빌드 실패 처리

이 단계에서는 빌드 실패를 시뮬레이션하고, 빌드가 실패했을 때만 정리 또는 알림 스크립트를 실행하도록 빌드 후 조치 (Post-build Action) 를 사용합니다. 이는 복원력 있는 파이프라인을 구축하는 데 매우 중요합니다.

Post-build Task 플러그인 설치

Post-build task 조치를 사용하기 전에 필요한 플러그인을 설치해야 합니다.

  1. Jenkins 에서 오른쪽 상단 모서리의 톱니바퀴 아이콘을 클릭하여 Jenkins 관리 패널에 액세스한 다음 Plugins를 클릭합니다.
  2. Available plugins 탭을 클릭합니다.
  3. Check now를 클릭하여 플러그인 목록을 새로 고칩니다.
  4. 검색 상자에 Post build task를 검색합니다.
  5. 해당 플러그인 옆의 확인란을 선택하고 Install without restart를 클릭합니다.
  6. 설치가 완료될 때까지 기다립니다.
Jenkins available plugins page searching for Post build task

실패 시뮬레이션을 위한 스크립트 수정

이제 특정 조건에서 실패하도록 스크립트를 수정해 보겠습니다.

  1. parameterized-script-jobConfigure 페이지로 이동합니다.
  2. Execute shell 명령 상자에서 스크립트를 다음 내용으로 대체합니다.
echo "Deploying to the $ENVIRONMENT environment."

if [ "$ENVIRONMENT" = "PROD" ]; then
  echo "Error: Production deployment is not allowed!"
  exit 1
fi

echo "Deployment to $ENVIRONMENT was successful."

이 스크립트는 ENVIRONMENT 파라미터를 확인합니다. 이 값이 PROD로 설정된 경우 오류 메시지를 출력하고 종료 코드 1로 종료합니다. 셸 스크립팅에서 0 이 아닌 종료 코드는 실패를 나타냅니다.

이제 실패 시 트리거되는 빌드 후 조치를 추가해 보겠습니다.

빌드 후 조치 추가

  1. Post-build Actions 섹션까지 아래로 스크롤합니다.
  2. Add post-build action을 클릭하고 Post-build task를 선택합니다.
  3. Log text 필드에 Error:를 입력합니다. 이는 플러그인에게 빌드 로그에서 이 특정 텍스트를 찾도록 지시합니다.
  4. Script 필드에 다음 명령을 입력합니다.
echo "FAILURE DETECTED! Sending notification..."
Post-build task configuration with failure detection
  1. Save를 클릭합니다.

실패 조건 테스트

이제 실패 조건을 테스트해 보겠습니다.

  1. Build with Parameters를 클릭합니다.
  2. ENVIRONMENT에 대해 PROD를 선택하고 Build를 클릭합니다.
  3. 빌드는 실패하며, 빌드 기록에서 빨간색 아이콘으로 표시됩니다.
  4. Console Output을 확인합니다. 메인 스크립트의 오류 메시지와 빌드 후 작업의 메시지를 모두 볼 수 있습니다.
Console output showing build failure and post-build task
Deploying to the PROD environment.
+ [ PROD = PROD ]
+ echo Error: Production deployment is not allowed!
Error: Production deployment is not allowed!
+ exit 1
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for :Error: : True
Logical operation result is TRUE
Running script  : echo "FAILURE DETECTED! Sending notification..."
[parameterized-script-job] $ /bin/sh -xe /tmp/jenkins14011006354379294736.sh
+ echo FAILURE DETECTED! Sending notification...
FAILURE DETECTED! Sending notification...
POST BUILD TASK : SUCCESS
END OF POST BUILD TASK : 0
Finished: FAILURE

빌드를 DEV 또는 STAGING으로 다시 실행하면 성공하며, 빌드 후 작업은 실행되지 않습니다.

요약

축하합니다. 유연하고 강력한 Jenkins 작업을 성공적으로 생성했습니다.

이 실습에서는 다음을 배웠습니다.

  • String 및 Choice 파라미터를 사용하여 파라미터화된 Jenkins 작업 생성
  • 빌드 프로세스의 일부로 쉘 스크립트 실행
  • 스크립트 내에서 빌드 파라미터를 환경 변수로 접근 및 사용
  • 빌드 결과를 제어하기 위해 스크립트에 조건부 로직 구현
  • 빌드 로그 내용을 기반으로 트리거되는 post-build 액션 구성, 이를 통해 빌드 실패를 우아하게 처리

이러한 기술은 다양한 입력에 적응하고 오류를 지능적으로 처리할 수 있는 정교한 CI/CD 파이프라인 구축에 필수적입니다. 이제 이러한 개념을 적용하여 자체 개발 및 배포 워크플로우를 자동화할 수 있습니다.