Files
moby/docker-bake.hcl
T
Akihiro Suda 98164696aa build: export dependencies for native integration tests
The Debian development image supplies the Go toolchain, runtime binaries,
test reporter, and frozen images. Even the VM jobs run inside that image,
so these dependencies have not needed to be installed on the guest.

Add a scratch export target that reuses the existing pinned build stages.
Native tests can then compile the daemon and tests against the guest's
userspace while retaining the same tools and fixtures. Export static
runtime binaries so they also work on older guest distributions.

Assisted-by: Codex
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-09-15 14:03:22 +09:00

229 lines
4.2 KiB
HCL

variable "DOCKER_DEBUG" {
default = ""
}
variable "DOCKER_STATIC" {
default = "1"
}
variable "DOCKER_LDFLAGS" {
default = ""
}
variable "DOCKER_BUILDTAGS" {
default = ""
}
variable "DOCKER_GITCOMMIT" {
default = null
}
# Docker version such as 23.0.0-dev. Automatically generated through Git ref.
variable "VERSION" {
default = ""
}
# The platform name, such as "Docker Engine - Community".
variable "PLATFORM" {
default = ""
}
# The product name, used to set version.ProductName, which is used to set
# BuildKit's ExportedProduct variable in order to show useful error messages
# to users when a certain version of the product doesn't support a BuildKit feature.
variable "PRODUCT" {
default = ""
}
# Sets the version.DefaultProductLicense string, such as "Community Engine".
# This field can contain a summary of the product license of the daemon if a
# commercial license has been applied to the daemon.
variable "DEFAULT_PRODUCT_LICENSE" {
default = ""
}
# The name of the packager (e.g. "Docker, Inc."). This used to set CompanyName
# in the manifest.
variable "PACKAGER_NAME" {
default = ""
}
# Special target: https://github.com/docker/metadata-action#bake-definition
target "docker-metadata-action" {
tags = ["moby-bin:local"]
}
# Defines the output folder
variable "DESTDIR" {
default = ""
}
function "bindir" {
params = [defaultdir]
result = DESTDIR != "" ? DESTDIR : "./bundles/${defaultdir}"
}
target "_common" {
args = {
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
DOCKER_DEBUG = DOCKER_DEBUG
DOCKER_STATIC = DOCKER_STATIC
DOCKER_LDFLAGS = DOCKER_LDFLAGS
DOCKER_BUILDTAGS = DOCKER_BUILDTAGS
DOCKER_GITCOMMIT = DOCKER_GITCOMMIT
VERSION = VERSION
PLATFORM = PLATFORM
PRODUCT = PRODUCT
DEFAULT_PRODUCT_LICENSE = DEFAULT_PRODUCT_LICENSE
PACKAGER_NAME = PACKAGER_NAME
}
}
group "default" {
targets = ["binary"]
}
target "_platforms" {
platforms = [
"linux/amd64",
"linux/arm/v5",
"linux/arm/v6",
"linux/arm/v7",
"linux/arm64",
"linux/ppc64le",
"linux/s390x",
"windows/amd64"
]
}
#
# build dockerd and docker-proxy
#
target "binary" {
inherits = ["_common"]
target = "binary"
output = [bindir(DOCKER_STATIC == "1" ? "binary" : "dynbinary")]
}
target "dynbinary" {
inherits = ["binary"]
output = [bindir("dynbinary")]
args = {
DOCKER_STATIC = "0"
}
}
target "binary-cross" {
inherits = ["binary", "_platforms"]
}
target "binary-smoketest" {
inherits = ["_common"]
target = "smoketest"
output = ["type=cacheonly"]
platforms = [
"linux/amd64",
"linux/arm/v6",
"linux/arm/v7",
"linux/arm64",
"linux/ppc64le",
"linux/s390x"
]
}
#
# same as binary but with extra tools as well (containerd, runc, ...)
#
target "all" {
inherits = ["_common"]
target = "all"
output = [bindir(DOCKER_STATIC == "1" ? "binary" : "dynbinary")]
}
target "all-cross" {
inherits = ["all", "_platforms"]
}
# Export the pinned tools and fixtures for integration tests on a Linux host.
target "test-integration-deps" {
inherits = ["_common"]
target = "test-integration-deps"
args = {
DOCKER_STATIC = "1"
}
output = [bindir("test-integration-deps")]
}
#
# bin image
#
target "bin-image" {
inherits = ["all", "docker-metadata-action"]
output = ["type=docker"]
}
target "bin-image-cross" {
inherits = ["bin-image"]
output = ["type=image"]
platforms = [
"linux/amd64",
"linux/arm/v6",
"linux/arm/v7",
"linux/arm64",
"linux/ppc64le",
"linux/s390x",
"windows/amd64"
]
}
#
# dind
#
target "dind" {
inherits = ["_common"]
target = "dind"
tags = ["docker-dind"]
output = ["type=docker"]
}
#
# dev
#
variable "SYSTEMD" {
default = "false"
}
variable "FIREWALLD" {
default = "false"
}
target "dev" {
inherits = ["_common"]
target = "dev"
args = {
SYSTEMD = SYSTEMD
FIREWALLD = FIREWALLD
}
tags = ["docker-dev"]
output = ["type=docker"]
}
#
# govulncheck
#
variable "GOVULNCHECK_FORMAT" {
default = null
}
target "govulncheck" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/govulncheck.Dockerfile"
target = "output"
args = {
FORMAT = GOVULNCHECK_FORMAT
}
no-cache-filter = ["run"]
output = ["${DESTDIR}"]
}