기본 Freestyle 프로젝트 구성하기

JenkinsBeginner
지금 연습하기

소개

Jenkins 에서 기본적인 Freestyle 프로젝트를 구성하는 실습에 오신 것을 환영합니다. Freestyle 프로젝트는 Jenkins 에서 매우 유연하고 사용하기 쉬운 옵션으로, 모든 유형의 프로젝트에 적합합니다. 웹 기반 그래픽 인터페이스를 통해 빌드 트리거, 빌드 단계 및 빌드 후 조치를 구성할 수 있습니다.

이번 실습을 통해 다음 내용을 배웁니다:

  • 프로젝트에 셸 명령 빌드 단계 추가하기.
  • 트리거를 사용하여 빌드가 자동으로 실행되도록 예약하기.
  • 나중에 사용할 수 있도록 빌드 아티팩트 보관하기.
  • 작업 공간 정리와 같은 빌드 후 조치 구성하기.

Jenkins 인스턴스가 이미 실행 중이며, sample-project라는 기본 Freestyle 프로젝트가 생성되어 있습니다. 데스크톱에서 Firefox 브라우저를 열어 Jenkins 웹 인터페이스에 접속할 수 있습니다. 브라우저는 자동으로 http://localhost:8080으로 열리므로 URL 을 직접 입력할 필요가 없습니다. 별도의 로그인은 필요하지 않습니다.

빌드 단계 추가

이 단계에서는 Freestyle 프로젝트에 빌드 단계를 추가합니다. 빌드 단계는 프로젝트의 핵심으로, 코드 컴파일, 테스트 실행, 셸 스크립트 실행 등 Jenkins 가 수행할 작업을 정의합니다.

먼저 프로젝트 구성 페이지로 이동합니다.

  1. 데스크톱 인터페이스에서 Firefox 브라우저를 엽니다. 브라우저는 자동으로 http://localhost:8080으로 열립니다.
  2. Jenkins 대시보드에서 sample-project를 확인합니다. 프로젝트 이름을 클릭하여 프로젝트 페이지로 이동합니다.
  3. 왼쪽 메뉴에서 Configure를 클릭합니다.

Jenkins 프로젝트 페이지

이제 프로젝트 구성 페이지에 있습니다. 빌드 단계를 추가해 보겠습니다.

  1. Build Steps 섹션까지 아래로 스크롤합니다.
  2. Add build step 드롭다운 버튼을 클릭하고 Execute shell을 선택합니다.

Build Steps 섹션

  1. 텍스트 상자가 나타납니다. Command 상자에 다음 명령을 입력합니다:
echo "Building the project..."
date
echo "Build complete."
  1. 페이지 하단의 Save 버튼을 클릭합니다.

이제 빌드 단계가 구성되었습니다. 빌드를 실행하여 실제로 작동하는지 확인해 보겠습니다.

  1. 프로젝트 페이지의 왼쪽 메뉴에서 Build Now를 클릭합니다.
  2. Build History 섹션에 새로운 빌드가 나타납니다. 빌드 번호 (예: #1) 를 클릭합니다.
  3. 해당 빌드의 왼쪽 메뉴에서 Console Output을 클릭합니다.

추가한 셸 명령의 출력 결과가 표시되며, 빌드 단계가 성공적으로 실행되었음을 확인할 수 있습니다.

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/sample-project
[sample-project] $ /bin/sh -xe /tmp/jenkins12345.sh
+ echo 'Building the project...'
Building the project...
+ date
Tue Jan 1 12:00:00 UTC 2024
+ echo 'Build complete.'
Build complete.
Finished: SUCCESS

트리거를 사용한 빌드 예약

이 단계에서는 빌드 트리거를 사용하여 빌드를 자동으로 예약하는 방법을 배웁니다. 이는 지속적 통합 (CI) 의 핵심 기능으로, 빌드를 주기적으로 실행할 수 있게 해줍니다.

  1. sample-project 구성 페이지 (프로젝트 페이지 > Configure) 로 다시 이동합니다.
  2. Triggers 섹션을 찾습니다.
  3. Build periodically 옆의 확인란을 선택합니다.

Triggers 섹션

  1. Schedule 텍스트 영역이 나타납니다. 이 필드는 cron 구문을 사용하여 일정을 정의합니다. 구문은 공백으로 구분된 5 개의 필드 (MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK) 로 구성됩니다.
  2. 대략 1 분마다 빌드를 실행하려면 Schedule 필드에 다음을 입력합니다:
* * * * *

이 cron 표현식은 "매분 실행"을 의미합니다. Jenkins 는 부하 분산을 위해 H 기호를 지원하지만, H/1 * * * *는 매분이 아니라 시간당 한 번 실행됩니다. 실제로 매분 실행하려면 * * * * *를 사용해야 합니다.

  1. Save를 클릭합니다.

이제 Jenkins 가 약 1 분마다 sample-project에 대한 새 빌드를 자동으로 트리거합니다. 프로젝트 페이지의 Build History를 확인하여 이를 관찰할 수 있습니다.

빌드 아티팩트 보관

이 단계에서는 빌드 아티팩트를 보관하는 방법을 배웁니다. 아티팩트는 컴파일된 바이너리나 보고서와 같이 빌드 과정에서 생성된 출력 파일입니다. 이를 보관하면 빌드가 완료된 후 다운로드할 수 있습니다.

먼저, 보관할 파일을 생성하도록 빌드 단계를 수정해야 합니다.

  1. sample-project 구성 페이지로 이동합니다.
  2. Build Steps 섹션으로 스크롤하여 Execute shell 명령 상자를 찾습니다.
  3. 스크립트에 build-info.txt라는 파일을 생성하는 새 줄을 추가합니다. $BUILD_NUMBER는 현재 빌드 번호를 담고 있는 Jenkins 제공 환경 변수입니다.
echo "Building the project..."
date
echo "Build complete."
echo "This artifact is from build #$BUILD_NUMBER" > build-info.txt

다음으로, 이 파일을 보관하기 위한 빌드 후 조치를 구성합니다.

  1. Post-build Actions 섹션으로 아래로 스크롤합니다.
  2. Add post-build action 드롭다운을 클릭하고 Archive the artifacts를 선택합니다.

Add post-build action 드롭다운

  1. Files to archive 필드에 보관할 파일 이름인 build-info.txt를 입력합니다. **/*.jar와 같은 와일드카드를 사용하여 여러 파일을 보관할 수도 있습니다.
  2. Save를 클릭합니다.

아티팩트 보관 구성

이제 Build Now를 클릭하여 새 빌드를 실행합니다. 빌드가 완료되면:

  1. Build History에서 최신 빌드 번호를 클릭합니다.
  2. 빌드 상태 페이지에 build-info.txt 링크가 포함된 Build Artifacts 섹션이 표시됩니다. 클릭하여 파일을 보거나 다운로드할 수 있습니다.

완료된 빌드 페이지

작업 공간 정리 구성

마지막 구성 단계에서는 작업 공간을 정리하기 위한 빌드 후 조치를 추가합니다. 이는 디스크 공간을 절약하고 각 빌드가 깨끗한 환경에서 시작되도록 하여 이전 빌드에서 생성된 파일로 인한 간섭을 방지하는 좋은 습관입니다.

  1. sample-project 구성 페이지로 이동합니다.
  2. Post-build Actions 섹션으로 아래로 스크롤합니다.
  3. Add post-build action 드롭다운을 클릭하고 Delete workspace when build is done을 선택합니다.

Add post-build action 드롭다운

  1. Save를 클릭합니다.

작업 공간 정리 구성

이제 sample-project의 각 빌드가 완료되면 Jenkins 가 작업 공간 디렉터리의 모든 파일을 삭제합니다. 보관된 아티팩트는 별도로 저장되므로 작업 공간 정리의 영향을 받지 않습니다. 이를 통해 빌드 아티팩트는 유지하면서 다음 실행을 위해 빌드 환경을 깨끗하게 유지할 수 있습니다.

요약

이번 실습을 성공적으로 마친 것을 축하합니다. Jenkins Freestyle 프로젝트를 구성하는 기본 사항을 성공적으로 배웠습니다.

이번 실습에서 다룬 내용은 다음과 같습니다:

  • 빌드 단계로 Execute shell 명령 추가하기.
  • cron 구문을 사용하여 주기적으로 빌드를 예약하는 Build Trigger 설정하기.
  • 빌드 아티팩트 생성 및 보관하기.
  • 빌드 후 작업 공간을 삭제하는 Post-build Action 구성하기.

이러한 기술은 Jenkins 를 사용하여 빌드, 테스트 및 배포 프로세스를 자동화하는 데 필수적입니다. 이제 이러한 개념을 적용하여 자신만의 CI/CD 파이프라인을 만들고 관리할 수 있습니다.