docker: Partially fix dirtied package checks.

docker: Move standalone target closer to test tree.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-01 23:40:15 +00:00
parent 9507ce9d03
commit 379f3eea25
3 changed files with 70 additions and 51 deletions

View File

@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS debuild FROM input AS deb
ARG sys_target ARG sys_target
ARG rust_toolchain ARG rust_toolchain
ARG RUSTUP_HOME ARG RUSTUP_HOME
@@ -52,17 +52,20 @@ RUN \
EOF EOF
FROM scratch AS package FROM scratch AS pkg-deb
ARG pkg_dir ARG pkg_dir
COPY --from=debuild ${pkg_dir}/* . COPY --from=input ${pkg_dir}/* .
FROM input AS package-install FROM input AS pkg-deb-install
ARG pkg_dir ARG pkg_dir
WORKDIR /
COPY --link --from=input . .
WORKDIR ${pkg_dir} WORKDIR ${pkg_dir}
COPY --link --from=package . . COPY --from=pkg-deb . .
RUN <<EOF RUN <<EOF
set -eux set -eux
dpkg --info * dpkg --info *

View File

@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS rpmbuild FROM input AS rpm
ARG sys_target ARG sys_target
ARG rust_toolchain ARG rust_toolchain
ARG RUSTUP_HOME ARG RUSTUP_HOME
@@ -45,20 +45,20 @@ RUN \
EOF EOF
FROM scratch AS package FROM scratch AS pkg-rpm
ARG pkg_dir ARG pkg_dir
COPY --link --from=rpmbuild ${pkg_dir}/* . COPY --link --from=input ${pkg_dir}/* .
FROM redhat/ubi9 AS package-install FROM input AS pkg-rpm-install
ARG pkg_dir ARG pkg_dir
WORKDIR / WORKDIR /
COPY --link --from=input . . COPY --link --from=input . .
WORKDIR ${pkg_dir} WORKDIR ${pkg_dir}
COPY --link --from=package . . COPY --link --from=pkg-rpm . .
RUN <<EOF RUN <<EOF
set -eux set -eux
rpm -i --test * rpm -i --test *

View File

@@ -288,27 +288,6 @@ target "dockerhub" {
] ]
} }
target "tuwunel" {
name = elem("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
output = ["type=docker,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys
inherits = [
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
]
contexts = {
input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
target = "tuwunel"
dockerfile-inline =<<EOF
FROM input AS tuwunel
EXPOSE 8008 8448
ENTRYPOINT ["${cargo_install_root}/bin/tuwunel"]
EOF
}
# #
# Complement tests # Complement tests
# #
@@ -528,6 +507,14 @@ target "smoketest" {
# Installation # Installation
# #
group "installs" {
targets = [
"install",
"standalone",
"tuwunel",
]
}
install_labels = { install_labels = {
"org.opencontainers.image.authors" = "${package_authors}" "org.opencontainers.image.authors" = "${package_authors}"
"org.opencontainers.image.created" ="${package_last_modified}" "org.opencontainers.image.created" ="${package_last_modified}"
@@ -542,13 +529,40 @@ install_labels = {
"org.opencontainers.image.version" = "${package_version}" "org.opencontainers.image.version" = "${package_version}"
} }
target "tuwunel" {
name = elem("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
output = ["type=docker,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys
inherits = [
elem("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
]
contexts = {
input = (
rust_toolchain == "stable"
|| cargo_profile == "release-max-perf"
|| cargo_profile == "release"
|| cargo_profile == "release-debuginfo"?
elem("target:standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
)
}
target = "tuwunel"
dockerfile-inline =<<EOF
FROM input AS tuwunel
EXPOSE 8008 8448
ENTRYPOINT ["tuwunel"]
EOF
}
target "standalone" { target "standalone" {
name = elem("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "standalone"
labels = install_labels
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
@@ -556,6 +570,7 @@ target "standalone" {
contexts = { contexts = {
input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
} }
target = "standalone"
dockerfile-inline =<<EOF dockerfile-inline =<<EOF
FROM scratch AS standalone FROM scratch AS standalone
COPY --from=input /usr/bin/tuwunel . COPY --from=input /usr/bin/tuwunel .
@@ -621,14 +636,15 @@ target "pkg-rpm-install" {
tags = [ tags = [
elem_tag("pkg-rpm-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("pkg-rpm-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "package-install" target = "pkg-rpm-install"
output = ["type=cacheonly,compression=zstd,mode=min"] output = ["type=cacheonly,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
package = elem("target:pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), input = "docker-image://redhat/ubi9"
pkg-rpm = elem("target:pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
} }
@@ -637,23 +653,23 @@ target "pkg-rpm" {
tags = [ tags = [
elem_tag("pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("pkg-rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "package" target = "pkg-rpm"
output = ["type=docker,compression=zstd,mode=min"] output = ["type=docker,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("rpmbuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
rpmbuild = elem("target:rpmbuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), input = elem("target:rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
} }
} }
target "rpmbuild" { target "rpm" {
name = elem("rpmbuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("rpmbuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("rpm", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "rpmbuild" target = "rpm"
dockerfile = "${docker_dir}/Dockerfile.cargo.rpm" dockerfile = "${docker_dir}/Dockerfile.cargo.rpm"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
@@ -672,7 +688,7 @@ target "pkg-deb-install" {
tags = [ tags = [
elem_tag("pkg-deb-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("pkg-deb-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "package-install" target = "pkg-deb-install"
output = ["type=cacheonly,compression=zstd,mode=min"] output = ["type=cacheonly,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
@@ -680,7 +696,7 @@ target "pkg-deb-install" {
] ]
contexts = { contexts = {
input = elem("target:diner", [feat_set, sys_name, sys_version, sys_target]) input = elem("target:diner", [feat_set, sys_name, sys_version, sys_target])
package = elem("target:pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), pkg-deb = elem("target:pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
} }
} }
@@ -689,23 +705,23 @@ target "pkg-deb" {
tags = [ tags = [
elem_tag("pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "package" target = "pkg-deb"
output = ["type=docker,compression=zstd,mode=min"] output = ["type=docker,compression=zstd,mode=min"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
debuild = elem("target:debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), input = elem("target:deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
} }
} }
target "debuild" { target "deb" {
name = elem("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "debuild" target = "deb"
dockerfile = "${docker_dir}/Dockerfile.cargo.deb" dockerfile = "${docker_dir}/Dockerfile.cargo.deb"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [