From 7c8b4ffcbc33be78e0cb92c2718915fdd3806fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Wed, 8 May 2024 16:15:45 +0200 Subject: [PATCH 1/4] chore/breaking(Linux): factorise jdk in docker-bake.hcl --- docker-bake.hcl | 179 ++++++++++++++++++++---------------------------- 1 file changed, 75 insertions(+), 104 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index d232658c..6e017460 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -1,20 +1,14 @@ group "linux" { targets = [ - "alpine_jdk11", - "alpine_jdk17", - "alpine_jdk21", - "debian_jdk11", - "debian_jdk17", - "debian_jdk21", + "alpine", + "debian", "debian_jdk21-preview", ] } group "linux-arm64" { targets = [ - "debian_jdk11", - "debian_jdk17", - "debian_jdk21", + "debian", "alpine_jdk21", ] } @@ -34,9 +28,7 @@ group "linux-s390x" { group "linux-ppc64le" { targets = [ - "debian_jdk11", - "debian_jdk17", - "debian_jdk21" + "debian" ] } @@ -84,120 +76,98 @@ variable "DEBIAN_RELEASE" { default = "bookworm-20240423" } -target "alpine_jdk11" { - dockerfile = "alpine/Dockerfile" - context = "." - args = { - ALPINE_TAG = ALPINE_FULL_TAG - JAVA_VERSION = JAVA11_VERSION - } - tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk11" : "", - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk11" : "", - "${REGISTRY}/${JENKINS_REPO}:alpine", - "${REGISTRY}/${JENKINS_REPO}:alpine-jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine-jdk11", - "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}", - "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}", - ] - platforms = ["linux/amd64"] +variable "default_jdk" { + default = 17 } -target "alpine_jdk17" { - dockerfile = "alpine/Dockerfile" - context = "." - args = { - ALPINE_TAG = ALPINE_FULL_TAG - JAVA_VERSION = JAVA17_VERSION - } - tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk17" : "", - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk17" : "", - "${REGISTRY}/${JENKINS_REPO}:alpine-jdk17", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine-jdk17", - "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk17", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk17", - ] - platforms = ["linux/amd64"] +# Return "true" if the jdk passed as parameter is the same as the default jdk, "false" otherwise +function "short_tag" { + params = [jdk] + result = equal(default_jdk, jdk) ? "true" : "false" } -target "alpine_jdk21" { - dockerfile = "alpine/Dockerfile" - context = "." - args = { - ALPINE_TAG = ALPINE_FULL_TAG - JAVA_VERSION = JAVA21_VERSION - } - tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk21" : "", - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk21" : "", - "${REGISTRY}/${JENKINS_REPO}:alpine-jdk21", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine-jdk21", - "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk21", - "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk21", - ] - platforms = ["linux/amd64", "linux/arm64"] +# Return the complete Java version corresponding to the jdk passed as parameter +function "javaversion" { + params = [jdk] + result = (equal(11, jdk) + ? "${JAVA11_VERSION}" + : (equal(17, jdk) + ? "${JAVA17_VERSION}" + : "${JAVA21_VERSION}") + ) } -target "debian_jdk11" { - dockerfile = "debian/Dockerfile" - context = "." - args = { - JAVA_VERSION = JAVA11_VERSION - DEBIAN_RELEASE = DEBIAN_RELEASE - } - tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "", - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk11" : "", - "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk11", - "${REGISTRY}/${JENKINS_REPO}:debian-jdk11", - "${REGISTRY}/${JENKINS_REPO}:jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest", - "${REGISTRY}/${JENKINS_REPO}:latest-bookworm-jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk11", - "${REGISTRY}/${JENKINS_REPO}:latest-jdk11", - ] - platforms = ["linux/amd64", "linux/arm64", "linux/s390x", "linux/ppc64le"] +# Return an array of Alpine platforms to use depending on the jdk passed as parameter +function "alpine_platform" { + params = [jdk] + result = (equal(21, jdk) + ? ["linux/amd64", "linux/arm64"] + : ["linux/amd64"] + ) } -target "debian_jdk17" { - dockerfile = "debian/Dockerfile" +# Return an array of Debian platforms to use depending on the jdk passed as parameter +function "debian_platform" { + params = [jdk] + result = (equal(17, jdk) + ? ["linux/amd64", "linux/arm64", "linux/ppc64le"] + : ["linux/amd64", "linux/arm64", "linux/ppc64le", "linux/s390x"] + ) +} + +target "alpine" { + matrix = { + jdk = [11, 17, 21] + } + name = "alpine_${jdk}" + dockerfile = "alpine/Dockerfile" context = "." args = { - JAVA_VERSION = JAVA17_VERSION - DEBIAN_RELEASE = DEBIAN_RELEASE + ALPINE_TAG = ALPINE_FULL_TAG + JAVA_VERSION = "${javaversion(jdk)}" } tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk17" : "", - "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk17", - "${REGISTRY}/${JENKINS_REPO}:debian-jdk17", - "${REGISTRY}/${JENKINS_REPO}:jdk17", - "${REGISTRY}/${JENKINS_REPO}:latest-bookworm-jdk17", - "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk17", - "${REGISTRY}/${JENKINS_REPO}:latest-jdk17", + # If there is a tag, add the versioned tags + equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk${jdk}" : "", + equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk${jdk}" : "", + # If the jdk is the default one, add Alpine short tags + equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:alpine" : "", + equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}" : "", + equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}" : "", + "${REGISTRY}/${JENKINS_REPO}:alpine-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:latest-alpine-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk${jdk}", ] - platforms = ["linux/amd64", "linux/arm64", "linux/ppc64le"] + platforms = alpine_platform("${jdk}") } -target "debian_jdk21" { +target "debian" { + matrix = { + jdk = [11, 17, 21] + } + name = "debian_${jdk}" dockerfile = "debian/Dockerfile" context = "." args = { - JAVA_VERSION = JAVA21_VERSION DEBIAN_RELEASE = DEBIAN_RELEASE + JAVA_VERSION = "${javaversion(jdk)}" } tags = [ - equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk21" : "", - "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk21", - "${REGISTRY}/${JENKINS_REPO}:debian-jdk21", - "${REGISTRY}/${JENKINS_REPO}:jdk21", - "${REGISTRY}/${JENKINS_REPO}:latest-bookworm-jdk21", - "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk21", - "${REGISTRY}/${JENKINS_REPO}:latest-jdk21", + # If there is a tag, add the versioned tag suffixed by the jdk + equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk${jdk}" : "", + # If there is a tag and if the jdk is the default one, add the versioned short tag + equal(ON_TAG, "true") ? (equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "") : "", + # If the jdk is the default one, add latest short tag + equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:latest" : "", + "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:debian-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:latest-bookworm-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk${jdk}", + "${REGISTRY}/${JENKINS_REPO}:latest-jdk${jdk}", ] - platforms = ["linux/amd64", "linux/arm64", "linux/ppc64le", "linux/s390x"] + platforms = ["linux/amd64", "linux/arm64", "linux/s390x", "linux/ppc64le"] } target "debian_jdk21-preview" { @@ -208,6 +178,7 @@ target "debian_jdk21-preview" { DEBIAN_RELEASE = DEBIAN_RELEASE } tags = [ + # If there is a tag, add the versioned tag suffixed by the jdk equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk21-preview" : "", "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk21-preview", "${REGISTRY}/${JENKINS_REPO}:debian-jdk21-preview", From f084584fdf4392e2ed31e57693b94665d8fb46f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Thu, 9 May 2024 11:38:52 +0200 Subject: [PATCH 2/4] nits & missing debian_platforms --- docker-bake.hcl | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index 6e017460..58686816 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -93,26 +93,23 @@ function "javaversion" { ? "${JAVA11_VERSION}" : (equal(17, jdk) ? "${JAVA17_VERSION}" - : "${JAVA21_VERSION}") - ) + : "${JAVA21_VERSION}")) } # Return an array of Alpine platforms to use depending on the jdk passed as parameter -function "alpine_platform" { +function "alpine_platforms" { params = [jdk] result = (equal(21, jdk) ? ["linux/amd64", "linux/arm64"] - : ["linux/amd64"] - ) + : ["linux/amd64"]) } # Return an array of Debian platforms to use depending on the jdk passed as parameter -function "debian_platform" { +function "debian_platforms" { params = [jdk] result = (equal(17, jdk) ? ["linux/amd64", "linux/arm64", "linux/ppc64le"] - : ["linux/amd64", "linux/arm64", "linux/ppc64le", "linux/s390x"] - ) + : ["linux/amd64", "linux/arm64", "linux/ppc64le", "linux/s390x"]) } target "alpine" { @@ -127,7 +124,7 @@ target "alpine" { JAVA_VERSION = "${javaversion(jdk)}" } tags = [ - # If there is a tag, add the versioned tags + # If there is a tag, add versioned tags suffixed by the jdk equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk${jdk}" : "", equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk${jdk}" : "", # If the jdk is the default one, add Alpine short tags @@ -139,7 +136,7 @@ target "alpine" { "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk${jdk}", ] - platforms = alpine_platform("${jdk}") + platforms = alpine_platforms("${jdk}") } target "debian" { @@ -154,9 +151,9 @@ target "debian" { JAVA_VERSION = "${javaversion(jdk)}" } tags = [ - # If there is a tag, add the versioned tag suffixed by the jdk + # If there is a tag, add versioned tag suffixed by the jdk equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk${jdk}" : "", - # If there is a tag and if the jdk is the default one, add the versioned short tag + # If there is a tag and if the jdk is the default one, add versioned short tag equal(ON_TAG, "true") ? (equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "") : "", # If the jdk is the default one, add latest short tag equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:latest" : "", @@ -167,7 +164,7 @@ target "debian" { "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:latest-jdk${jdk}", ] - platforms = ["linux/amd64", "linux/arm64", "linux/s390x", "linux/ppc64le"] + platforms = debian_platforms("${jdk}") } target "debian_jdk21-preview" { From 6044f4d5d37663da3a40b08197aadb020bc616d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Thu, 9 May 2024 12:33:32 +0200 Subject: [PATCH 3/4] simplify --- docker-bake.hcl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index 58686816..d2a6b7ea 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -81,7 +81,7 @@ variable "default_jdk" { } # Return "true" if the jdk passed as parameter is the same as the default jdk, "false" otherwise -function "short_tag" { +function "is_default_jdk" { params = [jdk] result = equal(default_jdk, jdk) ? "true" : "false" } @@ -128,15 +128,15 @@ target "alpine" { equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine-jdk${jdk}" : "", equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-alpine${ALPINE_SHORT_TAG}-jdk${jdk}" : "", # If the jdk is the default one, add Alpine short tags - equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:alpine" : "", - equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}" : "", - equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}" : "", + is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:alpine" : "", + is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}" : "", + is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}" : "", "${REGISTRY}/${JENKINS_REPO}:alpine-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:latest-alpine-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:alpine${ALPINE_SHORT_TAG}-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:latest-alpine${ALPINE_SHORT_TAG}-jdk${jdk}", ] - platforms = alpine_platforms("${jdk}") + platforms = alpine_platforms(jdk) } target "debian" { @@ -154,9 +154,9 @@ target "debian" { # If there is a tag, add versioned tag suffixed by the jdk equal(ON_TAG, "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}-jdk${jdk}" : "", # If there is a tag and if the jdk is the default one, add versioned short tag - equal(ON_TAG, "true") ? (equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "") : "", + equal(ON_TAG, "true") ? (is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "") : "", # If the jdk is the default one, add latest short tag - equal(short_tag(jdk), "true") ? "${REGISTRY}/${JENKINS_REPO}:latest" : "", + is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:latest" : "", "${REGISTRY}/${JENKINS_REPO}:bookworm-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:debian-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:jdk${jdk}", @@ -164,7 +164,7 @@ target "debian" { "${REGISTRY}/${JENKINS_REPO}:latest-debian-jdk${jdk}", "${REGISTRY}/${JENKINS_REPO}:latest-jdk${jdk}", ] - platforms = debian_platforms("${jdk}") + platforms = debian_platforms(jdk) } target "debian_jdk21-preview" { From 427788cf3a50b320b6b1af8fe4f5d95140db8e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= <91831478+lemeurherve@users.noreply.github.com> Date: Fri, 10 May 2024 18:04:57 +0200 Subject: [PATCH 4/4] Set jdk11 by default so no breaking chnage --- docker-bake.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index d2a6b7ea..c3ceea7f 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -77,7 +77,7 @@ variable "DEBIAN_RELEASE" { } variable "default_jdk" { - default = 17 + default = 11 } # Return "true" if the jdk passed as parameter is the same as the default jdk, "false" otherwise