소스 제어 (Git) 와 Jenkins 통합하기

JenkinsBeginner
지금 연습하기

소개

Jenkins 와 Git 통합에 관한 실습에 오신 것을 환영합니다. 소스 제어 관리 (SCM, Source Control Management) 는 현대 소프트웨어 개발의 초석입니다. Jenkins 와 같은 지속적 통합 (CI, Continuous Integration) 서버를 Git 과 같은 SCM 시스템과 통합하는 것은 빌드 및 테스트 프로세스를 자동화하는 기본적인 단계입니다.

본 실습에서는 다음 사항을 학습하게 됩니다.

  • Jenkins Git 플러그인이 사용 가능한지 확인하는 방법.
  • 로컬 Git 저장소에 연결된 프리스타일 (Freestyle) 프로젝트를 생성하는 방법.
  • 저장소의 스크립트를 실행하기 위한 빌드 단계를 추가하는 방법.
  • 구성을 테스트하기 위해 빌드를 수동으로 실행하는 방법.
  • 새로운 커밋 발생 시 빌드를 자동으로 트리거하도록 SCM 폴링을 구성하는 방법.

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

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

Git 플러그인 확인

Jenkins에는 Git 통합 기능이 내장되어 있습니다. Git 플러그인은 기본적으로 설치되어 있어 Jenkins가 Git 저장소와 상호 작용할 수 있습니다. Git 플러그인이 사용 가능한지 확인해 보겠습니다.

  1. 데스크톱 인터페이스에서 Firefox 브라우저를 엽니다. 브라우저는 자동으로 http://localhost:8080으로 열리므로 URL을 수동으로 입력할 필요가 없습니다. 로그인할 필요도 없습니다.
  2. Jenkins 대시보드에서 오른쪽 상단 모서리에 있는 톱니바퀴 아이콘(설정 버튼)을 클릭합니다.
  3. 설정 페이지에서 Plugins를 찾아 클릭합니다.
  4. Installed plugins 탭을 선택합니다.
  5. 오른쪽에 있는 검색 상자에 Git을 입력하여 설치된 플러그인을 필터링합니다.
  6. 설치된 플러그인 목록에서 Git plugin이 표시되어 Git 통합이 가능하다는 것을 확인할 수 있습니다.
Jenkins installed plugins page

Git 플러그인이 사용 가능한 것을 확인했으므로, 이제 Git을 사용하는 프로젝트를 생성하는 다음 단계로 진행할 수 있습니다.

프로젝트 생성 및 Git SCM 구성

Git 플러그인이 설치되었으므로 이제 Jenkins 프로젝트를 생성하고 Git 저장소에서 소스 코드를 가져오도록 구성할 수 있습니다.

  1. 왼쪽 상단의 브레드크럼 네비게이션에서 Dashboard 링크를 클릭하여 메인 Jenkins 대시보드로 돌아갑니다.
  2. 왼쪽 사이드바에서 New Item을 클릭합니다.
  3. 항목 이름으로 git-integration-project를 입력합니다.
  4. Freestyle project를 선택합니다.
  5. OK를 클릭합니다.

그러면 프로젝트 구성 페이지로 이동합니다.

  1. Source Code Management 섹션으로 스크롤합니다.
  2. Git 옵션을 선택합니다. 이 옵션이 보이지 않으면 이전 단계에서 Git 플러그인이 올바르게 설치되었는지 확인하십시오.
  3. Repository URL 필드에 준비된 로컬 Git 저장소의 절대 경로를 입력합니다.
https://github.com/labex-labs/git-playground
  1. Branch Specifier는 기본값인 */master로 둡니다. 이는 Jenkins 에게 master 브랜치를 사용하도록 지시합니다.
  2. 페이지 하단의 Save 버튼을 클릭합니다.
Source Code Management section in project configuration

이제 Git 저장소에 연결된 Jenkins 작업을 성공적으로 생성했습니다. 다음 단계에서는 작업이 코드에 대해 수행할 작업을 정의합니다.

빌드 단계 추가 및 수동 빌드 실행

이제 Jenkins 가 코드의 위치를 알게 되었으므로, 해당 코드로 무엇을 해야 할지 알려주어야 합니다. 쉘 명령을 사용하여 빌드 단계를 추가하고 수동으로 빌드를 실행하여 테스트해 보겠습니다.

  1. git-integration-project의 프로젝트 페이지에서 왼쪽 사이드바에 있는 Configure를 클릭합니다.
  2. Build Steps 섹션으로 스크롤합니다.
  3. Add build step 드롭다운을 클릭하고 Execute shell을 선택합니다.
  4. Command 텍스트 영역에 다음 빌드 명령을 입력합니다.
echo "Building the project..."
date
echo "Listing files in workspace:"
ls -la
echo "Build complete!"

작업이 실행되면 Jenkins 는 먼저 Git 저장소를 작업 공간 (workspace) 으로 복제한 다음 해당 작업 공간 내에서 이러한 명령을 실행합니다.

  1. Save를 클릭합니다.
  2. 이제 프로젝트 페이지로 돌아왔습니다. 빌드를 시작하려면 왼쪽 사이드바에 있는 Build Now를 클릭합니다.

새로운 빌드가 Build History 패널에 나타납니다. 빌드가 완료될 때까지 기다립니다 (성공하면 상태 아이콘이 파란색으로 바뀝니다).

  1. 빌드 번호 (예: #1) 를 클릭합니다.
  2. 빌드 메뉴에서 Console Output을 클릭합니다.
Build History

Jenkins 가 저장소를 복제하고 명령을 성공적으로 실행했음을 확인하는 출력을 볼 수 있습니다.

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/git-integration-project/.git ## timeout=10
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building the project...
Building the project...
+ date
Mon Jan 1 12:01:00 UTC 2024
+ echo Listing files in workspace:
Listing files in workspace:
+ ls -la
total 24
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 .
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 ..
drwxr-xr-x 8 jenkins jenkins 4096 Aug 21 10:33 .git
-rw-r--r-- 1 jenkins jenkins   32 Aug 21 10:33 README.md
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file1.txt
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file2.txt
+ echo Build complete!
Build complete!
Finished: SUCCESS

SCM 폴링으로 자동 빌드 활성화

수동으로 빌드를 실행하는 것은 테스트에 유용하지만, CI 의 진정한 힘은 자동화에 있습니다. 이 단계에서는 Git 저장소에서 변경 사항이 감지될 때마다 Jenkins 가 자동으로 빌드를 시작하도록 구성합니다.

  1. git-integration-project의 구성 페이지 (Project Page > Configure) 로 다시 이동합니다.
  2. Build Triggers 섹션으로 스크롤합니다.
  3. Poll SCM 옆의 확인란을 선택합니다.
  4. Schedule 텍스트 상자가 나타납니다. 이는 cron 구문을 사용하여 Jenkins 가 변경 사항을 저장소에서 얼마나 자주 확인할지 정의합니다. 1 분마다 폴링하려면 다음을 입력합니다.
* * * * *
  1. Save를 클릭합니다.

원격 GitHub 저장소 (https://github.com/labex-labs/git-playground) 를 사용하고 있으므로 폴링 트리거를 테스트하기 위해 직접 수정할 수는 없습니다. 하지만 SCM 폴링이 어떻게 작동하는지 관찰할 수 있습니다.

  1. Jenkins UI 로 돌아가 git-integration-project 페이지로 이동합니다.
  2. 왼쪽 사이드바에서 Git Polling Log라는 새 옵션을 볼 수 있습니다. 클릭합니다.
  3. 이 페이지는 폴링 활동을 보여줍니다. 다음과 같은 항목이 표시되어야 합니다.
Started on Aug 21, 2025, 10:36:00 AM
Using strategy: Default
[poll] Last Built Revision: Revision d22f46ba8c2d4e07d773c5126e9c803933eb5898 (refs/remotes/origin/master)
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git --version ## 'git version 2.30.2'
 > git ls-remote -h -- https://github.com/labex-labs/git-playground ## timeout=10
Found 3 remote heads on https://github.com/labex-labs/git-playground
[poll] Latest remote head revision on refs/heads/master is: d22f46ba8c2d4e07d773c5126e9c803933eb5898 - already built by 1
Done. Took 0.36 sec
No changes

이는 Jenkins 가 매분 원격 저장소에서 변경 사항을 성공적으로 폴링하고 있음을 보여줍니다. 실제 시나리오에서는 새 커밋이 저장소에 푸시될 때 Jenkins 가 자동으로 새 빌드를 트리거합니다.

  1. 수동 빌드를 트리거하려면 Build Now를 클릭하여 폴링 시스템이 수동 빌드와 어떻게 통합되는지 확인할 수도 있습니다.

요약

이 실습에서는 CI 파이프라인에서 가장 중요한 통합 중 하나인 Jenkins 와 Git 소스 제어 저장소를 연결하는 경험을 쌓았습니다.

다음과 같은 작업을 성공적으로 수행했습니다.

  • Jenkins 의 Git 통합 기능을 활성화하는 데 필수적인 Git plugin이 사용 가능한지 확인했습니다.
  • Freestyle project를 생성하고 Git 저장소에서 코드를 체크아웃하도록 구성했습니다.
  • 체크아웃된 코드에서 쉘 스크립트를 실행하는 build step을 정의했습니다.
  • manual build를 실행하여 설정을 확인했습니다.
  • Jenkins 가 새 커밋을 자동으로 감지하고 빌드할 수 있도록 하는 Poll SCM을 사용하여 자동 빌드 트리거를 설정했습니다.

이러한 기술은 개발 워크플로우를 자동화하는 데 기본이 되며, Jenkins 를 사용하여 강력하고 효율적인 CI/CD 파이프라인을 구축하기 위한 첫걸음입니다.