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