build agent

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-19 22:39:09 +02:00
1 parent a946c38194
commit a1389a6a61
11 files changed
+433 -18

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
# Offline verification of the agent-specific nFPM packaging pipeline.
set -Eeuo pipefail
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
WORK=$(mktemp -d)
trap 'rm -rf "$WORK"' EXIT
SRC=${1:-}
if [[ ! -d "${SRC:-}/docker-agent" ]]; then
SRC="$WORK/source"
mkdir -p "$SRC/docker-agent"
cat > "$SRC/docker-agent/rustproxy-docker-agent.service" <<'UNIT'
[Service]
User=rustproxy-docker-agent
Group=docker
EnvironmentFile=/etc/rustproxy/docker-agent.env
ExecStart=/usr/local/bin/rustproxy-docker-agent
StateDirectory=rustproxy-docker-agent
UNIT
cat > "$SRC/docker-agent/docker-agent.env.example" <<'ENV'
RUSTPROXY_DOCKER_AGENT_TOKEN=replace-with-at-least-24-random-characters
ENV
echo '# Docker Agent' > "$SRC/docker-agent/README.md"
fi
if [[ -f "$SRC/docker-agent/go.mod" && $(command -v go || true) ]]; then
(cd "$SRC/docker-agent" && GOWORK=off CGO_ENABLED=0 go test ./... && \
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -o "$WORK/agent" .)
else
cat > "$WORK/agent" <<'MOCK'
#!/bin/sh
exit 0
MOCK
chmod 0755 "$WORK/agent"
fi
export BUILDER_ROOT="$ROOT" VERSION=0.34.2 PACKAGE_RELEASE=4
export MAINTAINER='Package QA <qa@example.invalid>' HOMEPAGE=https://example.invalid
export GPG_PRIVATE_KEY_FILE="$WORK/test-key.asc"
"$ROOT/scripts/prepare-agent-package.sh" "$SRC" "$WORK/package" "$WORK/agent"
PKG="$WORK/package"
test -x "$PKG/payload/usr/bin/rustproxy-docker-agent"
grep -Fqx 'ExecStart=/usr/bin/rustproxy-docker-agent' "$PKG/payload/usr/lib/systemd/system/rustproxy-docker-agent.service"
grep -Fq 'config|noreplace' "$PKG/nfpm-deb.yaml"
grep -Fq 'config|noreplace' "$PKG/nfpm-rpm.yaml"
grep -q 'type: origin' "$PKG/nfpm-deb.yaml"
grep -q 'signature:' "$PKG/nfpm-rpm.yaml"
! grep -q '\.pkg' "$PKG/nfpm-deb.yaml"
for script in "$PKG"/scripts/*; do sh -n "$script"; done
for script in "$PKG"/scripts/*postinstall.sh; do
grep -Fq '/usr/bin/rustproxy-docker-agent init' "$script"
grep -Fq 'systemctl enable rustproxy-docker-agent.service' "$script"
done
if python3 -c 'import yaml' >/dev/null 2>&1; then
python3 - "$PKG" <<'PY_YAML'
import yaml, pathlib, sys
pkg=pathlib.Path(sys.argv[1])
for kind in ('deb','rpm'):
x=yaml.safe_load((pkg/f'nfpm-{kind}.yaml').read_text())
assert x['name']=='rustproxy-docker-agent'
assert x['version']=='0.34.2'
assert x['arch']=='amd64'
assert len(x['contents'])==4
assert x['scripts']['postinstall']
assert any(c['dst']=='/etc/rustproxy/docker-agent.env' and c['type']=='config|noreplace' for c in x['contents'])
PY_YAML
fi
echo 'Docker Agent package manifests, service layout and lifecycle scripts: OK'
+8 -1
View File
@@ -27,6 +27,13 @@ grep -q 'OPNsense branch will still run' "$ROOT/scripts/build-release.sh"
# Linux tests gate Linux packaging only.
grep -Fq 'cargo "+$LINUX_RUST_TOOLCHAIN" test --release' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'CGO_ENABLED=0 go test ./...' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'prepare-agent-package.sh' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'AGENT_DEB_FILE=' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'AGENT_RPM_FILE=' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'rustproxy-docker-agent' "$ROOT/scripts/generate-index.sh"
grep -Fq 'COPY --from=go-toolchain' "$ROOT/Dockerfile"
grep -q 'PACKAGING_REVISION=4' "$ROOT/scripts/lib.sh"
grep -Fq 'ensure-rust-toolchain.sh' "$ROOT/scripts/build-linux-release.sh"
grep -Fq 'ensure-rust-toolchain.sh' "$ROOT/scripts/build-opnsense.sh"
grep -Fq 'nfpm package' "$ROOT/scripts/build-linux-release.sh"
@@ -42,7 +49,7 @@ grep -q 'generate-opnsense-repo.py' "$ROOT/scripts/build-opnsense-release.sh"
grep -q 'last_opnsense_commit' "$ROOT/scripts/build-opnsense-release.sh"
test -f "$ROOT/opnsense/plugin/src/etc/rc.d/rustproxy"
test -x "$ROOT/opnsense/plugin/src/etc/rc.syshook.d/start/50-rustproxy.start"
! test -e "$ROOT/opnsense/plugin/src/etc/rc.syshook.d/10-rustproxy.start"
[[ ! -e "$ROOT/opnsense/plugin/src/etc/rc.syshook.d/10-rustproxy.start" ]]
grep -q 'OPNSENSE_PACKAGING_REVISION=4' "$ROOT/scripts/lib.sh"
test -f "$ROOT/opnsense/patches/0.20.0/0001-opnsense-build.patch"