dockerfiles/runner-helper/docker-bake.hcl (128 lines of code) (raw):

variable "RUNNER_IMAGES_REGISTRY" { default = "registry.gitlab.com/gitlab-org/ci-cd/runner-tools/base-images" } variable "RUNNER_IMAGES_VERSION" { default = "0.0.0" } variable "LOCAL_ARCH" { default = "amd64" } variable "LOCAL_FLAVOR" { default = "alpine-3.21" } common-platforms = [ "linux/amd64", "linux/arm", "linux/arm64", "linux/s390x", "linux/ppc64le", "linux/riscv64" ] alpine-platforms = { "3.18" : setsubtract(common-platforms, ["linux/riscv64"]), "3.19" : setsubtract(common-platforms, ["linux/riscv64"]), "3.21" : common-platforms, "latest" : common-platforms, "edge" : common-platforms, } target "base" { contexts = { binary_dir = "../../out/binaries/gitlab-runner-helper" } } target "alpine" { inherits = ["base"] name = "alpine-${replace(v.version, ".", "-")}-${v.arch}" matrix = { v = flatten([ for key, values in alpine-platforms : [ for plat in values : { version: key, arch: split("/", plat)[1] } ] ]) } args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-alpine-${v.version}" } platforms = ["linux/${v.arch}"] output = ["type=oci,dest=./../../out/helper-images/alpine${v.version == "latest" || v.version == "edge" ? "-${v.version}" : v.version}-${v.arch == "amd64" ? "x86_64" : v.arch}.tar"] } target "alpine-pwsh" { inherits = ["base"] name = "alpine-${replace(version, ".", "-")}-pwsh" matrix = { version = keys(alpine-platforms) } platforms = ["linux/amd64"] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-alpine-${version}-pwsh" } output = ["type=oci,dest=./../../out/helper-images/alpine${version == "latest" || version == "edge" ? "-${version}" : version}-x86_64-pwsh.tar,tar=true"] } target "ubuntu" { inherits = ["base"] name = "ubuntu-${replace(platform, "/", "-")}" matrix = { platform = common-platforms } platforms = [platform] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-ubuntu" } output = ["type=oci,dest=./../../out/helper-images/ubuntu-${split("/", platform)[1] == "amd64" ? "x86_64" : split("/", platform)[1]}.tar,tar=true"] } target "ubuntu-pwsh" { inherits = ["base"] name = "ubuntu-${replace(platform, "/", "-")}-pwsh" matrix = { platform = ["linux/amd64", "linux/arm64"] } platforms = [platform] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-ubuntu-pwsh" } output = ["type=oci,dest=./../../out/helper-images/ubuntu-${split("/", platform)[1] == "amd64" ? "x86_64" : split("/", platform)[1]}-pwsh.tar,tar=true"] } target "ubi-fips" { inherits = ["base"] platforms = ["linux/amd64"] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-ubi-fips" SRC_SUFFIX = "-fips" } output = ["type=oci,dest=./../../out/helper-images/ubi-fips-x86_64.tar,tar=true"] } target "windows" { inherits = ["base"] name = "windows-${replace(version, ":", "-")}" matrix = { version = ["nanoserver:ltsc2019", "nanoserver:ltsc2022", "servercore:ltsc2019", "servercore:ltsc2022"] } platforms = ["windows/amd64"] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-${replace(version, ":", "-")}" SRC_SUFFIX = ".exe" DST_SUFFIX = ".exe" DST_DIR = "/Program Files/gitlab-runner-helper" } output = ["type=oci,dest=./../../out/helper-images/windows-${replace(version, ":", "-")}-x86_64.tar,tar=true"] } # Used for local testing, creates the gitlab-runner-helper:local image in the user's current docker context target "local-image" { inherits = ["base"] args = { BASE_IMAGE = "${RUNNER_IMAGES_REGISTRY}/runner-helper:${RUNNER_IMAGES_VERSION}-${LOCAL_FLAVOR}" } platforms = ["linux/${LOCAL_ARCH}"] output = ["type=docker"] tags = ["gitlab-runner-helper:local"] } group "all" { targets = [ "alpine", "alpine-pwsh", "ubuntu", "ubuntu-pwsh", "ubi-fips", "windows", ] }