def POD_LABEL="servicedemo-${UUID.randomUUID().toString()}" def REGISTRY="docker.home.thejimnicholson.com/servicedemo" def POM_VERSION="unknown" def MVN_OPTS="-B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" podTemplate(label: POD_LABEL, containers: [ containerTemplate( name: 'maven', image: 'maven:3.8.4-openjdk-11', command: 'sleep', args: '30d' ), containerTemplate( name: 'kaniko', image: 'gcr.io/kaniko-project/executor:debug', command: 'sleep', args: '30d' ) ], workspaceVolume: dynamicPVC()) { node(POD_LABEL) { stage('Checkout') { checkout scm sh "git fetch" GIT_HASH = sh ( script: 'git rev-parse --short HEAD', returnStdout: true ).trim() GIT_TAG = sh ( script: 'git describe --tags --always --dirty=-dirty', returnStdout: true ).trim() container('maven') { stage('Prep') { sh """ mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=fr.brouillard.oss:jgitver:0.14.0:jar:executable ${MVN_OPTS} """ } stage('Build') { sh """ mvn clean package -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn """ POM_VERSION=sh ( script: "java -jar /root/.m2/repository/fr/brouillard/oss/jgitver/0.14.0/jgitver-0.14.0-executable.jar", returnStdout: true ) } } container('kaniko') { stage('Image') { ansiColor('xterm') { sh "/kaniko/executor \ -f `pwd`/Dockerfile \ -c `pwd` \ --insecure \ --skip-tls-verify \ --tarPath ./target/servicedemo-${POM_VERSION}.image.tar \ --destination=${REGISTRY}servicedemo:${POM_VERSION} \ --destination=${REGISTRY}servicedemo:${GIT_TAG}" } } stage('Archive') { archiveArtifacts artifacts: 'target/*.tar', followSymlinks: false archiveArtifacts artifacts: 'target/*.jar', followSymlinks: false } } } } }