Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(Linux): factorise jdk in docker-bake.hcl #401

Merged
merged 4 commits into from
May 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 72 additions & 104 deletions docker-bake.hcl
Original file line number Diff line number Diff line change
@@ -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",
]
}
Expand All @@ -34,9 +28,7 @@ group "linux-s390x" {

group "linux-ppc64le" {
targets = [
"debian_jdk11",
"debian_jdk17",
"debian_jdk21"
"debian"
]
}

Expand Down Expand Up @@ -84,120 +76,95 @@ 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 = 11
}

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 "is_default_jdk" {
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_platforms" {
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_platforms" {
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 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
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 = ["linux/amd64", "linux/arm64", "linux/ppc64le"]
platforms = alpine_platforms(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 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") ? (is_default_jdk(jdk) ? "${REGISTRY}/${JENKINS_REPO}:${VERSION}" : "") : "",
# If the jdk is the default one, add latest short tag
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}",
"${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 = debian_platforms(jdk)
}

target "debian_jdk21-preview" {
Expand All @@ -208,6 +175,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",
Expand Down