1. 테스트용 Maven 프로젝트 준비
먼저 GitLab에 새로운 저장소를 생성하고, simple-java-maven-app 예제 프로젝트를 가져옵니다. 해당 코드는 GitHub 또는 Gittree에서 공개된 리포지토리에서 확인 가능합니다.
다음으로, Maven의 빌드 속도를 향상시키기 위해 국내 반영된 미러 저장소를 구성합니다. 자세한 설정 방법은 알리바바 클라우드 문서를 참조하세요.
2. Jenkins 파이프라인 생성 및 설정
Jenkins 웹 인터페이스에서 새 파이프라인을 생성하고, 아래와 같은 단계를 수행합니다:
- 파이프라인 유형 선택: Pipeline
- 빌드 파라미터 추가: 소스 주소, 브랜치명, 빌드 타입, 실행 스크립트 등
- 파이프라인 스크립트 정의:
Jenkinsfile사용
3. Jenkinsfile 작성 및 공유 라이브러리 구성
3.1 Jenkinsfile (ci.jenkinsfile)
#!groovy
@Library('jenkinslibrary@master') _
// 공유 라이브러리 호출
def builder = new org.devops.BuildProcessor()
def helper = new org.devops.MessageHelper()
// 환경 변수로부터 입력 값 수신
String repoUrl = "${env.REPO_URL}"
String targetBranch = "${env.BRANCH_NAME}"
String buildMethod = "${env.BUILD_TOOL}"
String additionalArgs = "${env.ADDITIONAL_ARGS}"
pipeline {
agent any
stages {
stage('Checkout') {
steps {
script {
helper.displayMessage("코드 체크아웃 중", 'green')
checkout scmGit(
branches: [[name: targetBranch]],
userRemoteConfigs: [
[credentialsId: 'e7054d0e-275e-48ca-8188-e69da2faffb8', url: repoUrl]
],
extensions: []
)
}
}
}
stage('Build') {
steps {
script {
helper.displayMessage("빌드 및 패키징 진행", 'blue')
builder.execute(buildMethod, additionalArgs)
}
}
}
}
}
3.2 공유 라이브러리 - 빌드 처리 모듈 (src/org/devops/BuildProcessor.groovy)
package org.devops
class BuildProcessor {
def execute(String toolType, String args) {
// 빌드 도구 매핑
def toolMap = {
'mvn' -> 'M3'
'ant' -> 'ANT'
'gradle'-> 'GRADLE'
'npm' -> 'NPM'
}
println "사용된 빌드 도구: ${toolType}"
def toolHome = tool(toolMap[toolType])
sh "${toolHome}/bin/${toolType} ${args}"
}
}
3.3 공유 라이브러리 - 메시지 출력 유틸리티 (src/org/devops/MessageHelper.groovy)
package org.devops
class MessageHelper {
def displayMessage(String message, String color) {
def colorMap = {
'red' -> "\033[40;31m >>>>>>>>>>> ${message} <<<<<<<<<<< \033[0m"
'blue' -> "\033[47;34m ${message} \033[0m"
'green' -> "\033[40;32m >>>>>>>>>>> ${message} <<<<<<<<<<< \033[0m"
}
ansiColor('xterm') {
println colorMap[color]
}
}
}
4. 설정 검증
모든 구성이 완료되면, 파이프라인을 수동 실행하여 코드 체크아웃 및 빌드 과정이 정상적으로 동작하는지 확인합니다.
5. GitLab 커밋 기반 자동 트리거 설정
- Generic Webhook Trigger 플러그인 설치
- 파이프라인 설정에서 Generic Webhook Trigger를 활성화
- 트리거에 필요한 파라미터를 추가: 예를 들어,
repoUrl,branchName,buildTool등 - GitLab 저장소의 Settings > Webhooks에서 Jenkins URL을 등록
- 예:
http://your-jenkins-host/generic-webhook-trigger/invoke?token=abc123 - 테스트 요청을 보내고, 응답 상태코드가 200 OK인지 확인
- Jenkins에서 파이프라인이 정상적으로 실행되는지 모니터링
6. Webhook 실행 로그 확인
Generic Webhook Trigger 플러그인은 요청 데이터를 로그에 출력합니다. 파이프라인 실행 시점에 전달된 파라미터, 헤더 정보, 본문 내용 등을 확인할 수 있으며, 이는 문제 진단과 디버깅에 유용합니다.