diff --git a/.github/workflows/openjdk.yaml b/.github/workflows/openjdk.yaml index 6e1616d..1531db7 100644 --- a/.github/workflows/openjdk.yaml +++ b/.github/workflows/openjdk.yaml @@ -6,6 +6,36 @@ name: Release OpenJDK Images on: workflow_dispatch: + inputs: + version: + description: 'OpenJDK Version' + required: true + default: 'all' + type: choice + options: + - 'all' + - '8' + - '11' + - '17' + - '21' + java: + description: 'OpenJDK/JRE' + required: true + default: 'all' + type: choice + options: + - 'all' + - 'jdk' + - 'jre' + os: + description: 'OS for base image' + required: true + default: 'all' + type: choice + options: + - 'all' + - 'ubuntu' + - 'alpine' jobs: ################################################################# @@ -33,6 +63,10 @@ jobs: #============================ Build ============================ - name: Release Images uses: docker/bake-action@v4 + env: + ENV_VERSION: ${{ github.event.inputs.version }} + ENV_JAVA: ${{ github.event.inputs.java }} + ENV_OS: ${{ github.event.inputs.os }} with: targets: openjdk workdir: ./openjdk diff --git a/android/docker-bake.hcl b/android/docker-bake.hcl index 1012538..03670a0 100644 --- a/android/docker-bake.hcl +++ b/android/docker-bake.hcl @@ -28,7 +28,7 @@ target "_labels" { labels = { "org.opencontainers.image.description" = "Android Packaged by CentralX" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/busybox/docker-bake.hcl b/busybox/docker-bake.hcl index a4cd033..976b829 100644 --- a/busybox/docker-bake.hcl +++ b/busybox/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "busybox" "org.opencontainers.image.description" = "Busybox" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/clash/docker-bake.hcl b/clash/docker-bake.hcl index dfb18fd..ff04e47 100644 --- a/clash/docker-bake.hcl +++ b/clash/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "clash" "org.opencontainers.image.description" = "Clash with Dashboard" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/gradle/docker-bake.hcl b/gradle/docker-bake.hcl index 16a3eaa..87a1c37 100644 --- a/gradle/docker-bake.hcl +++ b/gradle/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { labels = { "org.opencontainers.image.description" = "Gradle Packaged by CentralX" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/hbase/docker-bake.hcl b/hbase/docker-bake.hcl index 3449157..8e720c2 100644 --- a/hbase/docker-bake.hcl +++ b/hbase/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "hbase" "org.opencontainers.image.description" = "Apache HBase" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/install-fonts/docker-bake.hcl b/install-fonts/docker-bake.hcl index fa72c2b..245b020 100644 --- a/install-fonts/docker-bake.hcl +++ b/install-fonts/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "install-fonts" "org.opencontainers.image.description" = "Install Fonts" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/install-pinpoint-java-agent/docker-bake.hcl b/install-pinpoint-java-agent/docker-bake.hcl index 5cb40e9..c1b15d5 100644 --- a/install-pinpoint-java-agent/docker-bake.hcl +++ b/install-pinpoint-java-agent/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "install-pinpoint-java-agent" "org.opencontainers.image.description" = "Install Pinpoint Java Agent" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/maven/docker-bake.hcl b/maven/docker-bake.hcl index ce13ba6..0e4d5ac 100644 --- a/maven/docker-bake.hcl +++ b/maven/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { labels = { "org.opencontainers.image.description" = "Maven Packaged by CentralX" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/nexus3/docker-bake.hcl b/nexus3/docker-bake.hcl index a1107c4..1158b7a 100644 --- a/nexus3/docker-bake.hcl +++ b/nexus3/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "Nexus Repository Manager" "org.opencontainers.image.description" = "The Nexus Repository Manager server with universal support for popular component formats." "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/openjdk/docker-bake.hcl b/openjdk/docker-bake.hcl index 6d9108a..fc2ed2f 100644 --- a/openjdk/docker-bake.hcl +++ b/openjdk/docker-bake.hcl @@ -7,108 +7,134 @@ # Groups #*************************************************************************** group "default" { - targets = [ - "openjdk" - ] + targets = [ + "openjdk" + ] } #*************************************************************************** # Global inheritable target #*************************************************************************** target "_platforms" { - platforms = [ - "linux/arm64", - "linux/amd64" - ] + platforms = [ + "linux/arm64", + "linux/amd64" + ] } target "_labels" { - labels = { - "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " - } + labels = { + "org.opencontainers.image.vendor" = "CentralX" + "org.opencontainers.image.maintainer" = "Alan Yeh " + } +} + +#*************************************************************************** +# Global Function +#*************************************************************************** +variable "ENV_VERSION" { + default = "all" +} + +variable "ENV_JAVA" { + default = "all" +} + +variable "ENV_OS" { + default = "all" } #*************************************************************************** # Global Function #*************************************************************************** function "if" { - params = [condition, true_return] - result = condition ? true_return : "" + params = [condition, true_return] + result = condition ? [true_return] : [] } #*************************************************************************** # Targets #*************************************************************************** target "openjdk" { - name = "openjdk-${java}${replace(version.code, ".", "_")}-${os.name}" - matrix = { - // 版本 - version = [{ - // 8 - major = "8" - code = "8.0.402" - zulu = "8.76.0.17" - }, { - // 11 - major = "11" - code = "11.0.22" - zulu = "11.70.15" - }, { - // 17 - major = "17" - code = "17.0.10" - zulu = "17.48.15" - }, { - // 21 - major = "21" - code = "21.0.2" - zulu = "21.32.17" - }] - // java 类型 - java = ["jdk", "jre"] - // 基础镜像发行版类型 - os = [{ - // ubuntu - name = "ubuntu" - image = "docker-image://ubuntu:jammy" - description = "Ubuntu Jammy" - suffix = "" - }, { - // alpine - name = "alpine" - image = "docker-image://alpine:3" - description = "Alpine 3" - suffix = "_musl" - }] - } - contexts = { - image = os.image - } - inherits = ["_platforms", "_labels"] - dockerfile = "Dockerfile" - labels = { - "org.opencontainers.image.title" = "open${java}" - "org.opencontainers.image.description" = "Azul Zulu Builds of Open${upper(java)} Packaged by CentralX" - "org.opencontainers.image.distribution" = os.description - "org.opencontainers.image.version" = version.code - } - args = { - VERSION = version.code - TARGET = "${java}" - AMD64_PACKAGE = "https://cdn.azul.com/zulu/bin/zulu${version.zulu}-ca-${java}${version.code}-linux${os.suffix}_x64.tar.gz" - ARM64_PACKAGE = "https://cdn.azul.com/zulu/bin/zulu${version.zulu}-ca-${java}${version.code}-linux${os.suffix}_aarch64.tar.gz" - } - tags = [ - // ubuntu 且 jdk 时才有的 tag - if(and(equal("ubuntu", os.name), equal("jdk", java)), "docker.io/centralx/openjdk:${version.major}"), - if(and(equal("ubuntu", os.name), equal("jdk", java)), "docker.io/centralx/openjdk:${version.code}"), + name = "openjdk-${java}${replace(version.code, ".", "_")}-${os.name}" + matrix = { + // 版本 + version = flatten([ + // 8 + if(contains(["all", "8"], "${ENV_VERSION}"), { + major = "8" + code = "8.0.402" + zulu = "8.76.0.17" + }), + // 11 + if(contains(["all", "11"], "${ENV_VERSION}"), { + major = "11" + code = "11.0.22" + zulu = "11.70.15" + }), + // 17 + if(contains(["all", "17"], "${ENV_VERSION}"), { + major = "17" + code = "17.0.10" + zulu = "17.48.15" + }), + // 21 + if(contains(["all", "21"], "{$ENV_VERSION}"), { + major = "21" + code = "21.0.2" + zulu = "21.32.17" + }) + ]) + // java 类型 + java = flatten([ + if(contains(["all", "jdk"], "${ENV_JAVA}"), "jdk"), + if(contains(["all", "jre"], "${ENV_JAVA}"), "jre") + ]) + // 基础镜像发行版类型 + os = flatten([ + // ubuntu + if(contains(["all", "ubuntu"], "${ENV_OS}"), { + name = "ubuntu" + image = "docker-image://ubuntu:jammy" + description = "Ubuntu Jammy" + suffix = "" + }), + // alpine + if(contains(["all", "alpine"], "${ENV_OS}"), { + name = "alpine" + image = "docker-image://alpine:3" + description = "Alpine 3" + suffix = "_musl" + }) + ]) + } + contexts = { + image = os.image + } + inherits = ["_platforms", "_labels"] + dockerfile = "Dockerfile" + labels = { + "org.opencontainers.image.title" = "open${java}" + "org.opencontainers.image.description" = "Azul Zulu Builds of Open${upper(java)} Packaged by CentralX" + "org.opencontainers.image.distribution" = os.description + "org.opencontainers.image.version" = version.code + } + args = { + VERSION = version.code + TARGET = "${java}" + AMD64_PACKAGE = "https://cdn.azul.com/zulu/bin/zulu${version.zulu}-ca-${java}${version.code}-linux${os.suffix}_x64.tar.gz" + ARM64_PACKAGE = "https://cdn.azul.com/zulu/bin/zulu${version.zulu}-ca-${java}${version.code}-linux${os.suffix}_aarch64.tar.gz" + } + tags = flatten([ + // ubuntu 且 jdk 时才有的 tag + if(and(equal("ubuntu", os.name), equal("jdk", java)), "docker.io/centralx/openjdk:${version.major}"), + if(and(equal("ubuntu", os.name), equal("jdk", java)), "docker.io/centralx/openjdk:${version.code}"), - // ubuntu 才有的 tag,alpine 没有 - if(equal("ubuntu", os.name), "docker.io/centralx/openjdk:${java}${version.major}"), - if(equal("ubuntu", os.name), "docker.io/centralx/openjdk:${java}${version.code}"), + // ubuntu 才有的 tag,alpine 没有 + if(equal("ubuntu", os.name), "docker.io/centralx/openjdk:${java}${version.major}"), + if(equal("ubuntu", os.name), "docker.io/centralx/openjdk:${java}${version.code}"), - "docker.io/centralx/openjdk:${java}${version.major}-${os.name}", - "docker.io/centralx/openjdk:${java}${version.code}-${os.name}" - ] + "docker.io/centralx/openjdk:${java}${version.major}-${os.name}", + "docker.io/centralx/openjdk:${java}${version.code}-${os.name}" + ]) } \ No newline at end of file diff --git a/resources-installer/docker-bake.hcl b/resources-installer/docker-bake.hcl index 7f889f3..2447e65 100644 --- a/resources-installer/docker-bake.hcl +++ b/resources-installer/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "resources-installer" "org.opencontainers.image.description" = "Install resources" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/spring-runner/docker-bake.hcl b/spring-runner/docker-bake.hcl index c530de9..d869da6 100644 --- a/spring-runner/docker-bake.hcl +++ b/spring-runner/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "spring-runner" "org.opencontainers.image.description" = "Spring Application Runner packaged by CentralX" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } } diff --git a/waitfor/docker-bake.hcl b/waitfor/docker-bake.hcl index e02f3a1..8a0e68e 100644 --- a/waitfor/docker-bake.hcl +++ b/waitfor/docker-bake.hcl @@ -27,7 +27,7 @@ target "_labels" { "org.opencontainers.image.title" = "waitfor" "org.opencontainers.image.description" = "Wait for" "org.opencontainers.image.vendor" = "CentralX" - "org.opencontainers.image.maintainer" = "Alan Yeh " + "org.opencontainers.image.maintainer" = "Alan Yeh " } }