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", "jre8"], ["9", "jre8"], ] stage("Checkout") { checkout scm } stage("Build") { versions.each { version -> ansiColor { def tomcatVersion = version[0] def jreVersion = version[1] def image image = docker.build( "${dockerNamespace}/${dockerBase}:tomcat${tomcatVersion}-${jreVersion}", "--build-arg TOMCAT_VERSION=${tomcatVersion} --build-arg TOMCAT_JRE=${jreVersion} .") def guacamoleVersion image.inside() { ansiColor { dir("tmp") { deleteDir() 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 = "${guacamoleVersion}-tomcat${tomcatVersion}-${jreVersion}" images << [ image, imageTag ] } } } stage("Push") { images.each { imageData -> def image = imageData[0] def imageTag = imageData[1] image.push(imageTag) } } }