Skip to content

Instantly share code, notes, and snippets.

@initcron
Created December 30, 2020 07:56
Show Gist options
  • Save initcron/0b19e4eb6bd2e985aacc5e27b3319e8f to your computer and use it in GitHub Desktop.
Save initcron/0b19e4eb6bd2e985aacc5e27b3319e8f 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.6.1-jdk-8-slim'
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.6.1-jdk-8-slim'
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.6.1-jdk-8-slim'
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("initcron/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