dev/기타

젠킨스 깃허브 웹훅과 젠킨스 연동하기: CI/CD 구축 가이드

wndud587 2024. 11. 16. 01:52
728x90

 

목차

1. 깃허브 설정

2. 젠킨스 설정

 

이 글에서는 깃허브 웹훅을 설정하고, 이를 통해 젠킨스에서 CI/CD 파이프라인을 구성하는 방법을 안내합니다.
젠킨스 설치 방법은 다루지 않으며, 설정을 위한 기본적인 선행작업이 필요합니다.

 


선행 작업

젠킨스와 깃허브 연동을 위해 다음 준비가 필요합니다:

  1. 젠킨스 설치 후 깃허브 계정 설정
    젠킨스 플러그인을 사용해 깃허브 계정을 등록합니다.
  2. 아이피타임 DDNS 발급 및 포트 포워딩
    • DDNS(예: yourdomain.iptime.org)를 통해 외부 접근이 가능하도록 설정합니다.
    • 젠킨스 포트를 방화벽에서 해제합니다.
  3. 외부 도메인 접근 테스트
    브라우저에서 http://<DDNS>:<PORT>로 젠킨스 접근이 가능한지 확인합니다.

1. 깃허브 설정

1.1. Webhooks 설정

  1. 깃허브 프로젝트의 Settings 메뉴로 이동합니다.
  2. 좌측 메뉴에서 Webhooks를 선택합니다.
  3. Add webhook 버튼을 클릭하고 아래와 같이 설정합니다:
    • Payload URL: 젠킨스의 외부 도메인 입력 (예: http://<DDNS>:<PORT>/github-webhook/)
    • Content type: application/json 선택
    • 저장 후 Add webhook 버튼 클릭

젠킨스 깃허브 웹훅 설정

설정 완료 후 Webhooks 목록에 추가된 항목을 확인할 수 있습니다.

1.2. 브랜치 설정

  • 개발 브랜치: main
  • 운영 브랜치: prod

개발 브랜치에서 작업을 진행한 후 prod로 머지하면, 웹훅을 통해 젠킨스에서 자동 빌드가 실행됩니다.

 


2. 젠킨스 설정

2.1. 새로운 프로젝트 생성

  1. 젠킨스에서 New Item을 선택합니다.
  2. 프로젝트 이름을 입력하고, Pipeline을 선택한 후 저장합니다.

2.2. 깃허브 연동

  • Project URL: 깃허브 프로젝트 주소 입력
  • GitHub hook trigger for GITScm polling 옵션 활성화

2.3. 파이프라인 스크립트 작성

아래는 샘플 파이프라인 코드입니다.

pipeline {
    agent any

    stages {
        stage('Git Clone') {
            steps {
                git branch: 'prod', credentialsId: '<GITHUB_CREDENTIALS_ID>', url: '<GITHUB_REPO_URL>'
            }
        }
        stage('Build') {
            steps {
                bat 'win_docker.bat'
            }
        }
    }
}

 

주요 설정

  • git branch: prod 브랜치로 설정
  • credentialsId: 젠킨스에 등록한 깃허브 토큰 ID
  • url: 깃허브 프로젝트 주소
  • bat: 윈도우 환경에서 실행할 .bat 파일 (아래 참고)

2.4. bat 파일 내용

win_docker.bat 파일은 도커 명령어를 사용하여 기존 컨테이너와 이미지를 정리하고, 새로 빌드 및 실행합니다.

 

@echo off
chcp 65001 >nul  REM UTF-8로 코드 페이지 설정

echo step 1: docker stop
docker stop sample-web 2>nul
if %ERRORLEVEL% neq 0 (
   echo sample-web 컨테이너가 존재하지 않거나 이미 중지되었습니다.
)

echo step 2: docker remove
docker rm sample-web 2>nul
if %ERRORLEVEL% neq 0 (
   echo sample-web 컨테이너가 이미 제거되었거나 존재하지 않습니다.
)

echo step 3: docker image remove
docker rmi sample-web 2>nul
if %ERRORLEVEL% neq 0 (
   echo sample-web 이미지를 찾을 수 없거나 이미 삭제되었습니다.
)

echo step 4: docker-compose up --build -d
docker-compose up --build -d

 

2.5. 파이프라인 빌드 테스트

  1. 젠킨스에서 Build Now를 클릭하여 초기 빌드를 실행합니다.
  2. 코드 수정 후 prod 브랜치에 푸시하면 CI/CD 파이프라인이 자동으로 실행됩니다.

결론

이번 글에서는 깃허브 웹훅과 젠킨스를 활용한 CI/CD 파이프라인 설정 과정을 다뤘습니다.
이를 통해 코드 변경 사항이 prod 브랜치로 머지되면 자동으로 빌드 및 배포가 이루어지는 환경을 구성할 수 있습니다

 

 

** 함께 보면 좋은 글

2024.11.13 - [dev] - 젠킨스 SpringBoot build gradlew not found 에러

 

젠킨스 SpringBoot build gradlew not found 에러

목차1. 오류 원인2. 해결 방법1. 오류 내용- 젠킨스를 사용하여 spring boot를 docker로 빌드하고 배포하는 중, 다음과 같은 오류 발생하였습니다.0.377 /bin/sh: ./gradlew: not foundERROR: process "/bin/sh -c ./gradlew

wndud587.tistory.com

 

 

 

 

* 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90