[Jenkins] Pipeline Script
node {
def mvnHome
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git 'https://github.com/jglick/simple-maven-project-with-tests.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'M3'
}
stage('Build') {
// Run the maven build
withEnv(["MVN_HOME=$mvnHome"]) {
if (isUnix()) {
sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
} else {
bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
}
}
}
stage('Results') {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
node : 빌드 에이전트를 효율적으로 사용하기 위해 필요하다. 빌드 스크립트가 실행될 노드를 명시적으로 지정한다.
node 대신 pipeline { agent any } 를 사용하면 사용 가능한 모든 빌드 에이전트 중 사용 가능한 것을 알아서 선택하도록 할 수 있다.
stage : 하나의 작업 단위이다. stage를 한 단위로 테스트나 사용자가 지정한 작업이 이루어진다.
step : 스테이지 내부에서 실행되는 작업을 의미한다.
node('docker') {
stages {
stage('Checkout') {
steps {
checkout([$class: 'SubversionSCM',
locations: [[
credentialsId: '6179a7d39e-2c3228-450f-a7b2-b98ae1308978',
remote: '...'
]],
workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage('Build & Unit Test') {
dir('/...') {
sh 'mvn clean verify -DskipITs=true'
junit '**/target/surefire-reports/TEST-*.xml'
archive 'target/*.tar'
}
}
stage('PMD') {
steps {
dir('/...') {
sh 'mvn pmd:pmd'
}
}
}
triggers {
cron('*/1 * * * *')
}
}
}
젠킨스 트리거가 발동되면 docker 노드가 일련을 작업을 처리한다. (젠킨스 슬레이브를 활용하려면 도커를 사용하는 편이 좋다)
cron으로 트리거를 설정 시 SCM에 변화가 없어도 특정 시간에 빌드를 수행하고, pollSCM으로 설정 시 SCM에 변화가 있을 때만 빌드르 수행한다.
maven으로 빌드를 진행하기에 pom.xml이 있는 위치에서 maven 관련 명령어를 수행하도록 설계해야 한다.
이후 추가 설정을 통해 모든 브랜치에서 CI 작업을 수행할 수 있도록 멀티브랜치 파이프라인을 구축하거나, 테스트에 소나큐브 플러그인을 사용해 정적 소스코드 분석 작업을 추가하는 등 다양한 작업을 추가할 수 있다.
파이프라인에 배포 작업까지 추가하게 되면 Continuous Deployment까지 구현할 수 있다. (노드를 다르게 설정하는 방식을 사용할 수 있다)
반응형
'DevOps > Jenkins' 카테고리의 다른 글
[Jenkins] CI와 젠킨스 (0) | 2023.03.22 |
---|---|
[Jenkins] Docker + Jenkins + SVN Pipeline 구축 (0) | 2023.03.21 |
[Jenkins] SVN과 Jenkins 연결 (0) | 2023.03.20 |
댓글
이 글 공유하기
다른 글
-
[Jenkins] CI와 젠킨스
[Jenkins] CI와 젠킨스
2023.03.22 -
[Jenkins] Docker + Jenkins + SVN Pipeline 구축
[Jenkins] Docker + Jenkins + SVN Pipeline 구축
2023.03.21 -
[Jenkins] SVN과 Jenkins 연결
[Jenkins] SVN과 Jenkins 연결
2023.03.20