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

JenkinsBeginner
지금 연습하기

소개

Jenkins 와 Git 을 통합하는 이번 실습에 오신 것을 환영합니다. 소스 제어 관리 (SCM) 는 현대 소프트웨어 개발의 핵심입니다. Jenkins 와 같은 지속적 통합 (CI) 서버를 Git 과 같은 SCM 시스템과 통합하는 것은 빌드 및 테스트 프로세스를 자동화하는 데 있어 가장 기본적인 단계입니다.

이번 실습에서는 다음 내용을 학습합니다:

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

이번 실습을 위해 Jenkins 인스턴스와 작은 로컬 Git 저장소가 이미 준비되어 있습니다. 바탕 화면의 Firefox 브라우저를 열어 Jenkins 웹 인터페이스에 접속할 수 있습니다. 브라우저는 자동으로 http://localhost:8080으로 열리므로 URL 을 직접 입력할 필요가 없습니다. 별도의 로그인은 필요하지 않습니다.

Git 플러그인 확인

Jenkins 는 플러그인을 사용하여 기능을 확장합니다. Git 플러그인은 작업 구성 시 사용할 수 있는 Git 옵션을 제공합니다.

  1. 바탕 화면에서 Firefox 브라우저를 엽니다. 브라우저는 자동으로 http://localhost:8080으로 연결됩니다. 별도의 로그인은 필요하지 않습니다.
  2. Jenkins 대시보드에서 오른쪽 상단의 톱니바퀴 아이콘을 클릭하여 **Manage Jenkins(Jenkins 관리)**로 이동합니다.
  3. **Plugins(플러그인)**를 클릭합니다.
  4. Installed plugins(설치된 플러그인) 탭을 선택합니다.
  5. 필터 상자에 git을 입력합니다.
  6. 설치된 플러그인 목록에 Git이 나타나는지 확인합니다.

설치된 Git 플러그인

Git 플러그인이 확인되었으므로, 이제 저장소에서 소스 코드를 가져오는 프로젝트를 생성할 수 있습니다.

프로젝트 생성 및 Git SCM 구성

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

  1. 왼쪽 상단의 이동 경로 (breadcrumb) 에서 Dashboard(대시보드) 링크를 클릭하여 메인 Jenkins 대시보드로 돌아갑니다.
  2. 왼쪽 사이드바에서 **New Item(새로운 Item)**을 클릭합니다.
  3. 항목 이름으로 git-integration-project를 입력합니다.
  4. Freestyle project를 선택합니다.
  5. OK를 클릭합니다.

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

  1. Source Code Management(소스 코드 관리) 섹션까지 아래로 스크롤합니다.
  2. Git 옵션을 선택합니다. 이 옵션이 보이지 않는다면 이전 단계에서 Git 플러그인이 올바르게 설치되었는지 확인하십시오.
  3. Repository URL(저장소 URL) 필드에 이번 실습을 위해 준비된 로컬 저장소 URL 을 입력합니다:
git://localhost/git-playground.git
  1. **Branch Specifier(브랜치 지정자)**는 기본값인 */master로 둡니다. 이는 Jenkins 가 master 브랜치를 사용하도록 지시합니다.
  2. 페이지 하단의 Save(저장) 버튼을 클릭합니다.

Git SCM 구성

로컬 Git 저장소에 연결된 Jenkins 작업을 성공적으로 생성했습니다. 다음 단계에서는 체크아웃된 코드로 어떤 작업을 수행할지 정의합니다.

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

이제 Jenkins 가 코드를 어디서 가져와야 하는지 알게 되었으므로, 그 코드로 무엇을 할지 알려주어야 합니다. 셸 명령을 포함한 빌드 단계를 추가하고 수동으로 빌드를 실행하여 테스트합니다.

  1. git-integration-project 프로젝트 페이지에서 왼쪽 사이드바의 **Configure(구성)**를 클릭합니다.
  2. Build Steps(빌드 단계) 섹션까지 아래로 스크롤합니다.
  3. Add build step(빌드 단계 추가) 드롭다운을 클릭하고 **Execute shell(셸 실행)**을 선택합니다.
  4. Command(명령) 텍스트 영역에 다음 빌드 명령을 입력합니다:
echo "Building from the Git repository"
./build.sh

작업이 실행되면 Jenkins 는 먼저 Git 저장소를 작업 공간 (workspace) 으로 복제한 다음, 해당 작업 공간 내에서 이 명령들을 실행합니다. build.sh 스크립트는 저장소에 포함되어 있으므로, 성공적으로 실행된다면 Jenkins 가 셸 단계를 실행하기 전에 코드를 올바르게 체크아웃했음을 의미합니다.

  1. **Save(저장)**를 클릭합니다.
  2. 프로젝트 페이지로 돌아왔습니다. 왼쪽 사이드바에서 **Build Now(빌드)**를 클릭하여 빌드를 시작합니다.

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

  1. 빌드 번호 (예: #1) 를 클릭합니다.
  2. 빌드 메뉴에서 **Console Output(콘솔 출력)**을 클릭합니다.

성공적인 Git 빌드

Jenkins 가 저장소를 복제하고 명령을 성공적으로 실행했음을 확인하는 출력이 표시되어야 합니다.

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building from the Git repository
Building from the Git repository
+ ./build.sh
Repository build script running
Workspace: /var/jenkins_home/workspace/git-integration-project
README.md
build.sh
Finished: SUCCESS

SCM 폴링을 통한 자동 빌드 활성화

수동으로 빌드를 실행하는 것은 테스트에 유용하지만, CI 의 진정한 힘은 자동화에 있습니다. 이 단계에서는 Jenkins 가 Git 저장소의 변경 사항을 주기적으로 확인 (폴링) 하도록 구성합니다.

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

일정이 작업 구성과 함께 저장되었습니다. 이제 Jenkins 는 1 분마다 구성된 저장소를 확인하고 새로운 커밋이 감지되면 자동으로 새 빌드를 시작합니다.

  1. Jenkins UI 로 돌아가서 git-integration-project 페이지로 이동합니다.
  2. 왼쪽 사이드바에 **Git Polling Log(Git 폴링 로그)**라는 새로운 옵션이 보일 것입니다. 클릭합니다.
  3. 이 페이지는 Jenkins 가 최소 한 번의 폴링 주기를 실행한 후의 폴링 활동을 보여줍니다. 첫 번째 항목이 나타나기까지 최대 1 분이 걸릴 수 있습니다. 다음과 같은 항목이 표시되어야 합니다:
Started on ...
Using strategy: Default
[poll] Last Built Revision: Revision ...
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git ls-remote -h -- git://localhost/git-playground.git ## timeout=10
...
No changes

SCM 폴링 구성

이는 Jenkins 가 저장소를 자동으로 폴링하도록 구성되었음을 보여줍니다. 실제 프로젝트에서는 저장소가 일반적으로 Git 서버에 호스팅되며, 새로운 커밋이 나타날 때 Jenkins 가 빌드를 수행하게 됩니다.

요약

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

다음 작업을 성공적으로 완료했습니다:

  • Jenkins 의 Git 통합 기능을 활성화하기 위해 필수적인 Git 플러그인이 사용 가능한지 확인했습니다.
  • Freestyle 프로젝트를 생성하고 Git 저장소에서 코드를 체크아웃하도록 구성했습니다.
  • 체크아웃된 코드에서 셸 스크립트를 실행하는 빌드 단계를 정의했습니다.
  • 수동 빌드를 실행하여 설정을 검증했습니다.
  • Poll SCM을 사용하여 자동 빌드 트리거를 설정함으로써, Jenkins 가 새로운 커밋을 자동으로 감지하고 빌드할 수 있도록 했습니다.

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