소개
Jenkins 에서 기본 Freestyle 프로젝트를 구성하는 실습에 오신 것을 환영합니다. Freestyle 프로젝트는 Jenkins 에서 매우 유연하고 사용하기 쉬운 옵션으로, 모든 유형의 프로젝트에 적합합니다. 웹 기반 그래픽 인터페이스를 통해 빌드 트리거, 빌드 단계 및 빌드 후 조치 (post-build actions) 를 구성할 수 있습니다.
본 실습에서는 다음 사항을 배우게 됩니다.
- 프로젝트에 셸 명령어 (shell command) 빌드 단계를 추가하는 방법.
- 트리거를 사용하여 빌드가 자동으로 실행되도록 예약하는 방법.
- 나중에 사용하기 위해 빌드 아티팩트 (build artifacts) 를 보관하는 방법.
- 작업 공간 정리 (workspace cleanup) 와 같은 빌드 후 조치를 구성하는 방법.
Jenkins 인스턴스는 이미 실행 중이며, sample-project라는 기본 Freestyle 프로젝트가 생성되어 있습니다. 데스크톱에서 Firefox 브라우저를 열어 Jenkins 웹 인터페이스에 접속할 수 있습니다. 브라우저가 자동으로 http://localhost:8080으로 열리므로 URL 을 수동으로 입력할 필요가 없습니다. 로그인도 필요하지 않습니다.
빌드 단계 추가
이 단계에서는 Freestyle 프로젝트에 빌드 단계를 추가합니다. 빌드 단계는 컴파일, 테스트 실행, 셸 스크립트 실행 등 Jenkins 가 수행할 작업을 정의하는 프로젝트의 핵심 요소입니다.
먼저 프로젝트 구성 페이지로 이동해 보겠습니다.
- 데스크톱 인터페이스에서 Firefox 브라우저를 엽니다. 브라우저는 자동으로
http://localhost:8080으로 열리므로 URL 을 수동으로 입력할 필요가 없습니다. 로그인도 필요하지 않습니다. - Jenkins 대시보드에서
sample-project를 볼 수 있습니다. 해당 이름을 클릭하여 프로젝트 페이지로 이동합니다. - 왼쪽 메뉴에서 Configure를 클릭합니다.

이제 프로젝트 구성 페이지에 있습니다. 빌드 단계를 추가해 보겠습니다.
- Build Steps 섹션까지 아래로 스크롤합니다.
- Add build step 드롭다운 버튼을 클릭하고 Execute shell을 선택합니다.

- 텍스트 상자가 나타납니다. Command 상자에 다음 명령어를 입력합니다.
echo "Building the project..."
date
echo "Build complete."
- 페이지 하단의 Save 버튼을 클릭합니다.
이제 빌드 단계를 구성했습니다. 빌드를 실행하여 작동하는지 확인해 보겠습니다.
- 프로젝트 페이지에서 왼쪽 메뉴의 Build Now를 클릭합니다.
- Build History 섹션에 새 빌드가 나타납니다. 빌드 번호 (예:
#1) 를 클릭합니다. - 해당 빌드의 왼쪽 메뉴에서 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
트리거로 빌드 예약
이 단계에서는 빌드 트리거를 사용하여 빌드를 자동으로 예약하는 방법을 배웁니다. 이는 지속적 통합 (continuous integration) 의 기본적인 기능으로, 주기적으로 빌드를 실행할 수 있게 해줍니다.
sample-project구성 페이지 (프로젝트 페이지 > Configure) 로 다시 이동합니다.- Build Triggers 섹션을 찾습니다.
- Build periodically 옆의 확인란을 선택합니다.

- Schedule 텍스트 영역이 나타납니다. 이 필드는 cron 구문을 사용하여 일정을 정의합니다. 구문은 공백으로 구분된 5 개의 필드로 구성됩니다:
MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK. - 빌드를 약 1 분마다 실행하려면 Schedule 필드에 다음을 입력합니다.
* * * * *
이 cron 표현식은 "매분 실행"을 의미합니다. Jenkins 는 부하 분산을 위해 H 기호를 지원하지만, H/1 * * * *는 실제로 매분 실행되는 것이 아니라 시간당 한 번 실행됩니다. 실제로 매분 실행하려면 * * * * *를 사용하십시오.
- Save를 클릭합니다.
이제 Jenkins 는 약 1 분마다 sample-project에 대한 새 빌드를 자동으로 트리거합니다. 프로젝트 페이지의 Build History를 보면서 이를 관찰할 수 있습니다.
빌드 아티팩트 아카이빙
이 단계에서는 빌드 아티팩트를 아카이빙하는 방법을 배웁니다. 아티팩트는 컴파일된 바이너리나 보고서와 같이 빌드에서 생성된 출력 파일입니다. 아티팩트를 아카이빙하면 빌드 완료 후 다운로드할 수 있습니다.
먼저, 아카이빙할 파일을 생성하도록 빌드 단계를 수정해야 합니다.
sample-project구성 페이지로 이동합니다.- Build Steps 섹션으로 스크롤하여 Execute shell 명령 상자를 찾습니다.
- 스크립트에 새 줄을 추가하여
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
다음으로, 이 파일을 아카이빙하기 위한 빌드 후 액션 (post-build action) 을 구성해 보겠습니다.
- Post-build Actions 섹션으로 스크롤합니다.
- Add post-build action 드롭다운을 클릭하고 Archive the artifacts를 선택합니다.

- Files to archive 필드에 아카이빙하려는 파일 이름인
build-info.txt를 입력합니다.**/*.jar와 같은 와일드카드 (wildcard) 를 사용하여 여러 파일을 아카이빙할 수도 있습니다. - Save를 클릭합니다.
이제 Build Now를 클릭하여 새 빌드를 실행합니다. 빌드가 완료되면:
- Build History에서 최신 빌드 번호를 클릭합니다.
- 빌드 상태 페이지에서 Build Artifacts라는 섹션과
build-info.txt에 대한 링크를 볼 수 있습니다. 이 링크를 클릭하여 파일을 보거나 다운로드할 수 있습니다.

작업 공간 정리 구성
이 마지막 구성 단계에서는 작업 공간을 정리하는 빌드 후 액션 (post-build action) 을 추가합니다. 이는 디스크 공간을 절약하고 각 빌드가 깨끗한 환경에서 시작되도록 하여 이전 빌드에서 생성된 파일과의 간섭을 방지하는 좋은 방법입니다.
sample-project구성 페이지로 이동합니다.- Post-build Actions 섹션으로 스크롤합니다.
- Add post-build action 드롭다운을 클릭하고 Delete workspace when build is done을 선택합니다.

- Save를 클릭합니다.
이제 sample-project의 각 빌드가 완료된 후 Jenkins 는 작업 공간 디렉터리의 모든 파일을 삭제합니다. 아카이빙된 아티팩트는 별도로 저장되며 작업 공간 정리의 영향을 받지 않습니다. 이를 통해 빌드 아티팩트는 계속 사용할 수 있으며 다음 실행을 위해 빌드 환경을 깨끗하게 유지할 수 있습니다.
요약
이 실습을 완료하신 것을 축하드립니다. Jenkins Freestyle 프로젝트 구성의 기본 사항을 성공적으로 학습했습니다.
이 실습에서는 다음을 연습했습니다.
- 빌드 단계로 Execute shell 명령 추가.
- cron 구문을 사용하여 빌드를 주기적으로 예약하는 Build Trigger 설정.
- 빌드 아티팩트 생성 및 아카이빙.
- 빌드 후 작업 공간을 삭제하는 Post-build Action 구성.
이러한 기술은 Jenkins 를 사용하여 빌드, 테스트 및 배포 프로세스를 자동화하는 데 필수적입니다. 이제 이러한 개념을 적용하여 자체 CI/CD 파이프라인을 생성하고 관리할 수 있습니다.

