def label = "servicedemo-${UUID.randomUUID().toString()}" podTemplate(label: 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: '99d' ) ], workspaceVolume: dynamicPVC()) { node(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('Build') { sh ''' mvn clean package -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ''' } stage('Archive') { archiveArtifacts artifacts: 'target/*.jar', followSymlinks: false } } container('kaniko') { stage('Image') { ansiColor('xterm') { sh "/kaniko/executor \ -f `pwd`/Dockerfile \ -c `pwd` \ --insecure \ --skip-tls-verify \ --no-push \ --tarPath ./target/servicedemo.image.tar \ --destination=servicedemo:${GIT_HASH}" } } stage('Archive') { archiveArtifacts artifacts: 'target/*.tar', followSymlinks: false } } } } }