pf-sdn/Jenkinsfile

64 lines
1.8 KiB
Groovy

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}"
}
}
}