diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a868c5c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,63 @@ +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}" + } + } +}