Files
rust-package-builder/tests/docker-agent-linux.sh
T
2026-10-19 22:39:09 +02:00

66 lines
2.6 KiB
Bash
Executable File

#!/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'