pipeline { agent any environment { VERSION = '' } stages { stage('Set build number into version') { steps { script { def baseVersion = sh( script: 'mvn -q help:evaluate -Dexpression=project.version -DforceStdout', returnStdout: true ).trim() def parts = baseVersion.tokenize('.') parts[parts.size() - 1] = "${env.BUILD_NUMBER}" env.VERSION = parts.join('.') sh "mvn -B versions:set -DnewVersion=${env.VERSION}" sh 'mvn -B versions:commit' echo "Build version: ${env.VERSION}" } } } stage('Maven package') { steps { sh 'mvn -B clean package' } } stage('Build docker image') { steps { sh "docker build -f docker/Dockerfile -t pfsdn:${env.VERSION} ." } } stage('Deploy') { steps { script { echo "Saving docker image pfsdn:${env.VERSION}" sh "docker save pfsdn:${env.VERSION} | gzip > pfsdn-${env.VERSION}.tar.gz" archiveArtifacts artifacts: "pfsdn-${env.VERSION}.tar.gz", fingerprint: true echo "Saving pfapp artifact launcher/target/${env.VERSION}.pfapp" archiveArtifacts artifacts: "launcher/target/${env.VERSION}.pfapp", fingerprint: true echo "TODO: deploy ${env.VERSION}.pfapp to repository (not implemented yet)" } } } } post { always { cleanWs() sh "docker rmi pfsdn:${env.VERSION}" } } }