ci: Smoketest valgrind.

docker: Dedup complement-tester-valgrind.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-06 02:30:42 +00:00
parent 73a690430e
commit 5a58c623e1
4 changed files with 107 additions and 119 deletions

View File

@@ -52,7 +52,7 @@ jobs:
name: Unit
uses: ./.github/workflows/bake.yml
with:
bake_targets: '["tests-unit"]'
bake_targets: '["unit"]'
cargo_profiles: '["test"]'
feat_sets: '["all"]'
rust_toolchains: ${{inputs.rust_toolchains}}
@@ -69,7 +69,7 @@ jobs:
name: Smoke
uses: ./.github/workflows/bake.yml
with:
bake_targets: '["tests-smoke"]'
bake_targets: '["smoke", "smoke-valgrind"]'
cargo_profiles: ${{inputs.cargo_profiles}}
feat_sets: ${{inputs.feat_sets}}
rust_toolchains: ${{inputs.rust_toolchains}}
@@ -83,12 +83,17 @@ jobs:
[
{"cargo_profile": "test", "feat_set": "default"},
{"cargo_profile": "test", "rust_toolchain": "stable"},
{"cargo_profile": "test", "feat_set": "none", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release", "rust_toolchain": "nightly"},
{"cargo_profile": "release", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release-debuginfo"},
{"cargo_profile": "release", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release-debuginfo", "bake_target": "smoke"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "none"},
{"cargo_profile": "release-native", "feat_set": "default"}
{"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "bake_target": "smoke-valgrind"}
]
complement:

View File

@@ -238,50 +238,3 @@ COPY <<EOF uwu.sh
EOF
RUN echo $(tr -d '\n' < uwu.sh) > uwu.sh
ENTRYPOINT ["/bin/bash", "/usr/src/complement/uwu.sh"]
FROM input AS complement-tester-valgrind
ARG complement_debug=0
ARG complement_count=1
ARG complement_parallel=16
ARG complement_shuffle=1337
ARG complement_timeout="1h"
ARG complement_run=".*"
ARG complement_skip=""
ARG complement_tags="conduwuit_blacklist"
ARG complement_tests="./tests/..."
ARG complement_base_image
WORKDIR /
COPY --link --from=input . .
WORKDIR /usr/src/complement
ENV COMPLEMENT_DEBUG=$complement_debug
ENV complement_parallel="$complement_parallel"
ENV complement_shuffle="$complement_shuffle"
ENV complement_tags="$complement_tags"
ENV complement_timeout="$complement_timeout"
ENV complement_count="$complement_count"
ENV complement_tests="$complement_tests"
ENV complement_skip="$complement_skip"
ENV complement_run="$complement_run"
ENV complement_tests="$complement_tests"
ENV COMPLEMENT_HOSTNAME_RUNNING_COMPLEMENT="host.docker.internal"
ENV COMPLEMENT_HOST_MOUNTS="/var/run/docker.sock:/var/run/docker.sock"
COPY <<EOF valgrind.sh
env;
set -eux;
COMPLEMENT_BASE_IMAGE="\${1:-$complement_base_image}"
go test
-shuffle="${complement_shuffle}"
-parallel="${complement_parallel}"
-timeout="${complement_timeout}"
-count="${complement_count}"
-tags="${complement_tags}"
-skip="${complement_skip}"
-run="${complement_run}"
"${complement_tests}"
EOF
RUN echo $(tr -d '\n' < valgrind.sh) > valgrind.sh
ENTRYPOINT ["/bin/bash", "/usr/src/complement/valgrind.sh"]

View File

@@ -1,7 +1,7 @@
# syntax = docker/dockerfile:1.11-labs
FROM input AS smoketest-version
FROM input AS smoke-version
COPY --link --from=input . .
RUN <<EOF
set -eux
tuwunel -V
@@ -10,8 +10,8 @@ RUN <<EOF
EOF
FROM input AS smoketest-startup
FROM input AS smoke-startup
COPY --link --from=input . .
ENV TUWUNEL_LOG="info"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF
@@ -25,18 +25,18 @@ RUN <<EOF
EOF
FROM input AS smoketest-valgrind
WORKDIR /
COPY --link --from=valgrind . .
FROM input AS smoke-valgrind
ARG leak_check="no"
ARG undef_value_errors="no"
COPY --link --from=input . .
ENV TUWUNEL_LOG="info"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF
set -eux
ulimit -n 65535
valgrind \
--leak-check=no \
--undef-value-errors=no \
--leak-check=${leak_check} \
--undef-value-errors=${undef_value_errors} \
--exit-on-first-error=yes \
--error-exitcode=1 \
tuwunel \
@@ -48,11 +48,8 @@ RUN <<EOF
EOF
FROM input AS smoketest-perf
WORKDIR /
COPY --link --from=perf . .
FROM input AS smoke-perf
COPY --link --from=input . .
ENV TUWUNEL_LOG="error"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF

View File

@@ -226,8 +226,8 @@ group "lints" {
group "tests" {
targets = [
"tests-unit",
"tests-smoke",
"unit",
"smoke",
"complement",
]
}
@@ -324,11 +324,11 @@ target "complement-testee-valgrind" {
dockerfile = "${docker_dir}/Dockerfile.complement"
matrix = cargo_rust_feat_sys
inherits = [
elem("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("complement-testee", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
]
contexts = {
input = elem("target:smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
input = elem("target:smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
complement-tester = elem("target:complement-tester-valgrind", [sys_name, sys_version, sys_target])
}
}
@@ -361,7 +361,6 @@ target "complement-tester-valgrind" {
tags = [
elem_tag("complement-tester-valgrind", [sys_name, sys_version, sys_target], "latest"),
]
target = "complement-tester-valgrind"
entitlements = ["network.host"]
matrix = sys
inherits = [
@@ -426,77 +425,75 @@ target "complement-config" {
# Smoke tests
#
group "tests-smoke" {
group "smoke" {
targets = [
"smoketest-version",
"smoketest-startup",
#"smoketest-valgrind",
#"smoketest-perf",
"smoke-version",
"smoke-startup",
#"smoke-valgrind",
#"smoke-perf",
]
}
target "smoketest-valgrind" {
name = elem("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "smoke-valgrind" {
name = elem("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
elem_tag("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
target = "smoketest-valgrind"
entitlements = ["security.insecure"]
target = "smoke-valgrind"
matrix = cargo_rust_feat_sys
inherits = [
elem("valgrind", [feat_set, sys_name, sys_version, sys_target]),
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
elem("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
]
contexts = {
valgrind = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target])
input = elem("target:install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
}
target "smoketest-perf" {
name = elem("smoketest-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "smoke-perf" {
name = elem("smoke-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("smoketest-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
elem_tag("smoke-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
target = "smoketest-perf"
entitlements = ["security.insecure"]
target = "smoke-perf"
matrix = cargo_rust_feat_sys
inherits = [
elem("perf", [feat_set, sys_name, sys_version, sys_target]),
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
elem("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
]
contexts = {
perf = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target])
input = elem("target:install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
}
target "smoketest-startup" {
name = elem("smoketest-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "smoke-startup" {
name = elem("smoke-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("smoketest-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
elem_tag("smoke-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
]
target = "smoketest-startup"
target = "smoke-startup"
matrix = cargo_rust_feat_sys
inherits = [
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
]
}
target "smoketest-version" {
name = elem("smoketest-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "smoke-version" {
name = elem("smoke-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("smoketest-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
elem_tag("smoke-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
target = "smoketest-version"
target = "smoke-version"
matrix = cargo_rust_feat_sys
inherits = [
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
]
}
target "smoketest" {
name = elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "tests-smoke" {
name = elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
elem_tag("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
dockerfile = "${docker_dir}/Dockerfile.smoketest"
@@ -596,6 +593,37 @@ target "static" {
EOF
}
target "install-valgrind" {
name = elem("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = cargo_rust_feat_sys
inherits = [
elem("valgrind", [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 = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target])
bins = elem("target:build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
}
target "install-perf" {
name = elem("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = cargo_rust_feat_sys
inherits = [
elem("perf", [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 = elem("target:perf", [feat_set, sys_name, sys_version, sys_target])
}
}
target "install" {
name = elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
@@ -742,10 +770,10 @@ target "deb" {
# Unit tests
#
target "tests-unit" {
name = elem("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target "unit" {
name = elem("unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
elem_tag("unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
target = "cargo"
matrix = cargo_rust_feat_sys
@@ -1527,31 +1555,36 @@ sys = {
target "perf" {
description = "Base runtime environment with linux-perf installed."
name = elem("perf", [sys_name, sys_version, sys_target])
name = elem("perf", [feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("perf", [sys_name, sys_version, sys_target], "latest"),
elem_tag("perf", [feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = sys
matrix = feat_sys
inherits = [
elem("base", [sys_name, sys_version, sys_target])
elem("runtime", [feat_set, sys_name, sys_version, sys_target])
]
contexts = {
input = elem("target:base", [sys_name, sys_version, sys_target])
input = elem("target:runtime", [feat_set, sys_name, sys_version, sys_target])
}
}
target "valgrind" {
description = "Base runtime environment with valgrind installed."
name = elem("valgrind", [sys_name, sys_version, sys_target])
name = elem("valgrind", [feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("valgrind", [sys_name, sys_version, sys_target], "latest"),
elem_tag("valgrind", [feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = sys
matrix = feat_sys
inherits = [
elem("base", [sys_name, sys_version, sys_target])
elem("runtime", [feat_set, sys_name, sys_version, sys_target])
]
contexts = {
input = elem("target:base", [sys_name, sys_version, sys_target])
input = elem("target:runtime", [feat_set, sys_name, sys_version, sys_target])
}
args = {
packages = join(" ", [
"valgrind",
])
}
}