node("docker && linux && amd64") { def images = [] def dockerNamespace = "icedream" def dockerBase = "disguised-guacamole" def dockerCredentials = "dockerhub_login_icedream" def dockerRegistry = "" def versions = [ // syntax: [ tomcatVersion, jreVersion ] ["8.5", "jre7"], ["8.5", "jre8"], ["9", "jre8"], ] stage("Checkout") { checkout scm } stage("Build") { def imageVersion versions.each { version -> def tomcatVersion = version[0] def jreVersion = version[1] def guacamoleVersion def image = docker.build( "${dockerNamespace}/${dockerBase}:tomcat${tomcatVersion}-jre${jreVersion}", "--build-arg TOMCAT_VERSION=${tomcatVersion} --build-arg JRE_VERSION=${jreVersion} .") image.inside("-w /tmp") { sh """ unzip /opt/guacamole/guacamole.war META-INF/maven/org.apache.guacamole/guacamole/pom.properties """ guacamoleVersion = sh( script: "grep -Po '(?i)^version=\\K.+\\s*\$' META-INF/maven/org.apache.guacamole/guacamole/pom.properties", returnStdout: true, ).trim() } def imageTag = "${dockerNamespace}/${dockerBase}:${guacamoleVersion}-tomcat${tomcatVersion}-jre${jreVersion}" images << [ image, imageFullName ] } } stage("Push") { images.each { imageData -> def image = imageData[0] def imageTag = imageData[1] image.push(imageTag) } } }