Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:
-
name: Build
run: |
make -j$(nproc) -C pkg/${{ matrix.name }} all-${{ matrix.pkg }}
make -j1 -C pkg/${{ matrix.name }} all-${{ matrix.pkg }}
env:
BUILD_CACHE_SCOPE: build-${{ matrix.name }}-${{ matrix.pkg }}
-
Expand Down
10 changes: 6 additions & 4 deletions common/build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
# limitations under the License.

define run_bake
@PKG_RELEASE=$(1) DESTDIR=$(2) docker buildx bake $(3) $(4) --print
$(eval $@_TMP_OUT := $(shell mktemp -d -t docker-packaging.XXXXXXXXXX))
PKG_RELEASE=$(1) DESTDIR=$($@_TMP_OUT) docker buildx bake $(3) $(4)
$(eval FILTERED_PLATFORMS = $(filter $(PKG_SUPPORTED_PLATFORMS),$(4)))
$(eval PLATFORMS = $(if $(PKG_SUPPORTED_PLATFORMS:-=),$(FILTERED_PLATFORMS),$(4)))
@PKG_RELEASE=$(1) DESTDIR=$(2) docker buildx bake $(foreach platform,$(PLATFORMS),--set "*.platform=$(platform)") $(3) pkg --print
PKG_RELEASE=$(1) DESTDIR=$($@_TMP_OUT) docker buildx bake $(foreach platform,$(PLATFORMS),--set "*.platform=$(platform)") $(3) pkg
mkdir -p $(2)
find $($@_TMP_OUT) -mindepth 2 -maxdepth 2 -type d -exec cp -rf {} $(2)/ ';'
find $(2) -type d -empty -delete
Expand Down Expand Up @@ -48,8 +50,8 @@ pkg-multi-static:

.PHONY: build-%
build-%: pkg-info-%
$(call run_bake,$*,$(DESTDIR),$(BAKE_DEFINITIONS),pkg)
$(call run_bake,$*,$(DESTDIR),$(BAKE_DEFINITIONS),)

.PHONY: build-multi-%
build-multi-%: pkg-info-%
$(call run_bake,$*,$(DESTDIR),$(BAKE_DEFINITIONS),pkg-multi)
$(call run_bake,$*,$(DESTDIR),$(BAKE_DEFINITIONS),$(PKG_PLATFORMS))
49 changes: 27 additions & 22 deletions common/packages.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ PKG_APK_RELEASES ?= alpine314 alpine315 alpine316
PKG_DEB_RELEASES ?= debian10 debian11 ubuntu1804 ubuntu2004 ubuntu2204 raspbian10 raspbian11
PKG_RPM_RELEASES ?= centos7 centos8 centos9 fedora35 fedora36 fedora37 oraclelinux7 oraclelinux8 oraclelinux9

# PKG_SUPPORTED_PLATFORMS could be replaced by:
# docker buildx imagetools inspect centos:7 --format "{{json .Manifest}}" | jq -r '.manifests[] | "\(.platform.os)/\(.platform.architecture)/\(.platform.variant)"' | sed 's#/null$##' | tr '\n' ',' | sed 's#,$##'

.PHONY: pkg-apk-releases
pkg-apk-releases:
$(eval PKG_RELEASES = $(PKG_APK_RELEASES))
Expand All @@ -36,156 +39,158 @@ pkg-info-alpine314:
$(eval PKG_DISTRO = alpine)
$(eval PKG_SUITE = 3.14)
$(eval PKG_BASE_IMAGE = alpine:3.14)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l armv6l armv5l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v7 linux/arm/v6 linux/arm/v5 linux/ppc64le linux/s390x)

.PHONY: pkg-info-alpine315
pkg-info-alpine315:
$(eval PKG_TYPE = apk)
$(eval PKG_DISTRO = alpine)
$(eval PKG_SUITE = 3.15)
$(eval PKG_BASE_IMAGE = alpine:3.15)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l armv6l armv5l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v7 linux/arm/v6 linux/arm/v5 linux/ppc64le linux/s390x)

.PHONY: pkg-info-alpine316
pkg-info-alpine316:
$(eval PKG_TYPE = apk)
$(eval PKG_DISTRO = alpine)
$(eval PKG_SUITE = 3.16)
$(eval PKG_BASE_IMAGE = alpine:3.16)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l armv6l armv5l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v7 linux/arm/v6 linux/arm/v5 linux/ppc64le linux/s390x)

.PHONY: pkg-info-debian10
pkg-info-debian10:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = debian)
$(eval PKG_SUITE = buster)
$(eval PKG_BASE_IMAGE = debian:buster)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l armv6l ppc64le riscv64 s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v7)

.PHONY: pkg-info-debian11
pkg-info-debian11:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = debian)
$(eval PKG_SUITE = bullseye)
$(eval PKG_BASE_IMAGE = debian:bullseye)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l armv6l ppc64le riscv64 s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v5 linux/arm/v6 linux/arm/v7 linux/mips64le linux/ppc64le linux/s390x)

.PHONY: pkg-info-raspbian10
pkg-info-raspbian10:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = raspbian)
$(eval PKG_SUITE = buster)
$(eval PKG_BASE_IMAGE = raspbian:buster)
$(eval PKG_SUPPORTED_ARCHS = armv6l)
$(eval PKG_BASE_IMAGE = balenalib/rpi-raspbian:buster)
$(eval PKG_SUPPORTED_PLATFORMS = linux/arm/v7)

.PHONY: pkg-info-raspbian11
pkg-info-raspbian11:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = raspbian)
$(eval PKG_SUITE = bullseye)
$(eval PKG_BASE_IMAGE = raspbian:bullseye)
$(eval PKG_SUPPORTED_ARCHS = armv6l)
$(eval PKG_BASE_IMAGE = balenalib/rpi-raspbian:bullseye)
$(eval PKG_SUPPORTED_PLATFORMS = linux/arm/v7)

.PHONY: pkg-info-ubuntu1804
pkg-info-ubuntu1804:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = ubuntu)
$(eval PKG_SUITE = bionic)
$(eval PKG_BASE_IMAGE = ubuntu:bionic)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/arm/v7 linux/ppc64le linux/s390x)

.PHONY: pkg-info-ubuntu2004
pkg-info-ubuntu2004:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = ubuntu)
$(eval PKG_SUITE = focal)
$(eval PKG_BASE_IMAGE = ubuntu:focal)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64 armv7l ppc64le riscv64 s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/arm/v7 linux/ppc64le linux/riscv64 linux/s390x)

.PHONY: pkg-info-ubuntu2204
pkg-info-ubuntu2204:
$(eval PKG_TYPE = deb)
$(eval PKG_DISTRO = ubuntu)
$(eval PKG_SUITE = jammy)
$(eval PKG_BASE_IMAGE = ubuntu:jammy)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64 armv7l ppc64le riscv64 s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/arm/v7 linux/ppc64le linux/riscv64 linux/s390x)

.PHONY: pkg-info-centos7
pkg-info-centos7:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = centos)
$(eval PKG_SUITE = 7)
$(eval PKG_BASE_IMAGE = centos:7)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 armv7l ppc64le)
@# FIXME: packages look broken for linux/arm/v7 on centos:7
$(eval PKG_SUPPORTED_PLATFORMS = linux/386 linux/amd64 linux/arm64 linux/ppc64le)

.PHONY: pkg-info-centos8
pkg-info-centos8:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = centos)
$(eval PKG_SUITE = 8)
$(eval PKG_BASE_IMAGE = quay.io/centos/centos:stream8)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 ppc64le)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/ppc64le)

.PHONY: pkg-info-centos9
pkg-info-centos9:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = centos)
$(eval PKG_SUITE = 9)
$(eval PKG_BASE_IMAGE = quay.io/centos/centos:stream9)
$(eval PKG_SUPPORTED_ARCHS = i386 x86_64 aarch64 arm64 ppc64le s390x)
@# FIXME: packages look broken for linux/s390x on centos:stream9
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/ppc64le)

.PHONY: pkg-info-fedora35
pkg-info-fedora35:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = fedora)
$(eval PKG_SUITE = 35)
$(eval PKG_BASE_IMAGE = fedora:35)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64 armv7l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/ppc64le linux/s390x)

.PHONY: pkg-info-fedora36
pkg-info-fedora36:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = fedora)
$(eval PKG_SUITE = 36)
$(eval PKG_BASE_IMAGE = fedora:36)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64 armv7l ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/ppc64le linux/s390x)

.PHONY: pkg-info-fedora37
pkg-info-fedora37:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = fedora)
$(eval PKG_SUITE = 37)
$(eval PKG_BASE_IMAGE = fedora:37)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64 ppc64le s390x)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64 linux/ppc64le linux/s390x)

.PHONY: pkg-info-oraclelinux7
pkg-info-oraclelinux7:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = oraclelinux)
$(eval PKG_SUITE = 7)
$(eval PKG_BASE_IMAGE = oraclelinux:7)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64)

.PHONY: pkg-info-oraclelinux8
pkg-info-oraclelinux8:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = oraclelinux)
$(eval PKG_SUITE = 8)
$(eval PKG_BASE_IMAGE = oraclelinux:8)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64)

.PHONY: pkg-info-oraclelinux9
pkg-info-oraclelinux9:
$(eval PKG_TYPE = rpm)
$(eval PKG_DISTRO = oraclelinux)
$(eval PKG_SUITE = 9)
$(eval PKG_BASE_IMAGE = oraclelinux:9)
$(eval PKG_SUPPORTED_ARCHS = x86_64 aarch64 arm64)
$(eval PKG_SUPPORTED_PLATFORMS = linux/amd64 linux/arm64)

.PHONY: pkg-info-static
pkg-info-static:
$(eval PKG_TYPE = static)
$(eval PKG_DISTRO = static)
$(eval PKG_SUITE =)
$(eval PKG_BASE_IMAGE = debian:bullseye)
$(eval PKG_SUPPORTED_ARCHS =)
$(eval PKG_SUPPORTED_PLATFORMS =)
8 changes: 4 additions & 4 deletions common/vars.mk
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
export BASEDIR ?= $(CURDIR)
export GO_IMAGE ?= golang
export GO_VERSION ?= 1.18.5
export GO_IMAGE_VARIANT ?= buster
export GO_IMAGE_VARIANT ?= bullseye

export PKG_VENDOR ?= Docker
export PKG_PACKAGER ?= Docker <support@docker.com>
Expand Down Expand Up @@ -53,10 +53,10 @@ export COMPOSE_REPO ?= https://github.com/docker/compose.git
export SCAN_REPO ?= https://github.com/docker/scan-cli-plugin.git
export CREDENTIAL_HELPERS_REPO ?= https://github.com/docker/docker-credential-helpers.git

export DOCKER_ENGINE_VERSION ?= v20.10.17
export DOCKER_CLI_VERSION ?= v20.10.17
export DOCKER_ENGINE_VERSION ?= v22.06.0-beta.0
export DOCKER_CLI_VERSION ?= v22.06.0-beta.0
export CONTAINERD_VERSION ?= v1.6.8
export BUILDX_VERSION ?= v0.9.1
export COMPOSE_VERSION ?= v2.10.2
export SCAN_VERSION ?= v0.19.0
export CREDENTIAL_HELPERS_VERSION ?= v0.7.0-beta.1
export CREDENTIAL_HELPERS_VERSION ?= v0.7.0
9 changes: 6 additions & 3 deletions pkg/buildx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,19 @@ include ../../common/vars.mk

DESTDIR ?= $(BASEDIR)/bin
BAKE_DEFINITIONS ?= -f docker-bake.hcl -f ../../common/packages.hcl
PKG_LIST ?= apk deb rpm static
DEFAULT_RULE ?= pkg-multi

PKG_LIST ?= apk deb rpm static
# supported platforms: https://github.com/docker/buildx/blob/e98c2524905e659d34ac01cc328cd21c966be3f2/docker-bake.hcl#L112-L124
PKG_PLATFORMS ?= darwin/amd64 darwin/arm64 linux/amd64 linux/arm/v6 linux/arm/v7 linux/arm64 linux/ppc64le linux/riscv64 linux/s390x windows/amd64 windows/arm64

.PHONY: all
all: $(DEFAULT_RULE)
# noop
@#

.PHONY: all-%
all-%: $(DEFAULT_RULE)-%
# noop
@#

.PHONY: version
version:
Expand Down
61 changes: 15 additions & 46 deletions pkg/buildx/docker-bake.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,19 @@ target "_common" {
cache-to = [BUILD_CACHE_SCOPE != "" ? "type=gha,scope=${BUILD_CACHE_SCOPE}-${PKG_RELEASE}" : ""]
}

target "_platforms" {
# $ PKG_RELEASE=debian11 docker buildx bake pkg
# $ docker buildx bake --set *.platform=linux/amd64 --set *.output=./bin pkg
group "pkg" {
targets = [substr(BUILDX_VERSION, 0, 1) == "#" ? "_pkg-build" : "_pkg-download"]
}

# Create release image by using ./bin folder as named context. Make sure all
# pkg targets are called before releasing
target "release" {
inherits = ["meta-helper"]
dockerfile = "../../common/release.Dockerfile"
target = "release"
# same as PKG_PLATFORMS in Makefile
platforms = [
"darwin/amd64",
"darwin/arm64",
Expand All @@ -109,27 +121,6 @@ target "_platforms" {
"windows/amd64",
"windows/arm64"
]
}

# $ PKG_RELEASE=debian11 docker buildx bake pkg
# $ docker buildx bake --set *.platform=linux/amd64 --set *.output=./bin pkg
group "pkg" {
targets = [substr(BUILDX_VERSION, 0, 1) == "#" ? "_pkg-build" : "_pkg-download"]
}

# Same as pkg but for all supported platforms
group "pkg-multi" {
targets = [substr(BUILDX_VERSION, 0, 1) == "#" ? "_pkg-build-multi" : "_pkg-download-multi"]
}

# Create release image by using ./bin folder as named context. Therefore
# pkg or pkg-multi target must be run before using this target:
# $ PKG_RELEASE=debian11 docker buildx bake pkg-multi
# $ docker buildx bake release --push --set *.tags=docker/packaging:build-v0.9.1
target "release" {
inherits = ["meta-helper", "_platforms"]
dockerfile = "../../common/release.Dockerfile"
target = "release"
contexts = {
bin-folder = "./bin"
}
Expand All @@ -138,13 +129,7 @@ target "release" {
target "_pkg-download" {
inherits = ["_common"]
target = "pkg"
platforms = ["local"]
output = [bindir("local")]
}

target "_pkg-download-multi" {
inherits = ["_pkg-download", "_platforms"]
output = [bindir("multi")]
output = [bindir(PKG_RELEASE)]
}

target "_pkg-build" {
Expand All @@ -156,19 +141,7 @@ target "_pkg-build" {
contexts = {
build = "target:_build"
}
output = [bindir("local")]
}

target "_pkg-build-multi" {
inherits = ["_pkg-download-multi"]
args = {
MODE = "build"
BUILDX_VERSION = trimprefix(BUILDX_VERSION, "#")
}
contexts = {
build = "target:_build-multi"
}
output = [bindir("multi")]
output = [bindir(PKG_RELEASE)]
}

target "_build" {
Expand All @@ -180,7 +153,3 @@ target "_build" {
}
target = "binaries"
}

target "_build-multi" {
inherits = ["build", "_platforms"]
}
9 changes: 6 additions & 3 deletions pkg/compose/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,19 @@ include ../../common/vars.mk

DESTDIR ?= $(BASEDIR)/bin
BAKE_DEFINITIONS ?= -f docker-bake.hcl -f ../../common/packages.hcl
PKG_LIST ?= apk deb rpm static
DEFAULT_RULE ?= pkg-multi

PKG_LIST ?= apk deb rpm static
# supported platforms: https://github.com/docker/compose/blob/e2a3fe94273b05a1428652ba248edeee4171427f/docker-bake.hcl#L95-L107
PKG_PLATFORMS ?= darwin/amd64 darwin/arm64 linux/amd64 linux/arm/v6 linux/arm/v7 linux/arm64 linux/ppc64le linux/riscv64 linux/s390x windows/amd64 windows/arm64

.PHONY: all
all: $(DEFAULT_RULE)
# noop
@#

.PHONY: all-%
all-%: $(DEFAULT_RULE)-%
# noop
@#

.PHONY: version
version:
Expand Down
Loading