build agent
This commit is contained in:
1 parent
a946c38194
commit
a1389a6a61
11 files changed
+433
-18
No files matched your search
Executable
+65
@@ -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
@@ -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"
|
||||
|
||||
|
||||
Reference in new issue
Block a user