Skip to content

Instantly share code, notes, and snippets.

@eeganlf
Forked from initcron/Jenkinsfile
Last active July 24, 2024 23:16
Show Gist options
  • Save eeganlf/6247fb59f7a3ca41b63a394e2ace5c9a to your computer and use it in GitHub Desktop.
Save eeganlf/6247fb59f7a3ca41b63a394e2ace5c9a to your computer and use it in GitHub Desktop.
worker/jenkinsfile with Per stage agent as well as conditional execution.
pipeline {
agent none
stages{
stage("build"){
when{
changeset "**/worker/**"
}
agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps{
echo 'Compiling worker app..'
dir('worker'){
sh 'mvn compile'
}
}
}
stage("test"){
when{
changeset "**/worker/**"
}
agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps{
echo 'Running Unit Tets on worker app..'
dir('worker'){
sh 'mvn clean test'
}
}
}
stage("package"){
when{
branch 'master'
changeset "**/worker/**"
}
agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps{
echo 'Packaging worker app'
dir('worker'){
sh 'mvn package -DskipTests'
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}
}
}
stage('docker-package'){
agent any
when{
changeset "**/worker/**"
branch 'master'
}
steps{
echo 'Packaging worker app with docker'
script{
docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') {
def workerImage = docker.build("xxxxx/worker:v${env.BUILD_ID}", "./worker")
workerImage.push()
workerImage.push("${env.BRANCH_NAME}")
workerImage.push("latest")
}
}
}
}
}
post{
always{
echo 'Building multibranch pipeline for worker is completed..'
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment