ref:fedf3c89c3ab18bab5ec8bed1a95723bd60b5ba7

feat(ci): publish versioned releases with CalVer tags

- Config reads ANVIL_SERVER_URL and ANVIL_TOKEN from env (for CI) - release list gets --format json for script consumption - ci/release.sh computes next CalVer version (YYYY.MM.BUILD) - build-runner step publishes release on main with versioned assets Asset naming: anvil_runner_linux_{amd64,arm64}_YYYY.MM.BUILD CI artifacts keep unversioned names (per-run already). Requires ANVIL_TOKEN CI secret: anvil ci set-secret ANVIL_TOKEN <pat> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SHA: fedf3c89c3ab18bab5ec8bed1a95723bd60b5ba7
Author: Cole Christensen <cole.christensen@macmillan.com>
Date: 2026-04-10 05:37
Parents: 98c330d
4 files changed +98 -15
Type
.anvil.yml +32 −2
@@ -61,7 +61,7 @@
timeout_seconds: 1800
run: |
set -e
apt-get update && apt-get install -y gcc-x86-64-linux-gnu 2>&1
apt-get update && apt-get install -y gcc-x86-64-linux-gnu jq 2>&1
# Build arm64 natively (CI runner is aarch64)
echo "==> Building arm64 binary (native)..."
@@ -73,10 +73,40 @@
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=x86_64-linux-gnu-gcc \
cargo build --release --target x86_64-unknown-linux-gnu 2>&1
# Stage for CI artifact upload (unversioned names)
# Stage for artifact upload
mkdir -p runner-dist
cp target/release/anvil runner-dist/anvil_runner_linux_arm64
cp target/x86_64-unknown-linux-gnu/release/anvil runner-dist/anvil_runner_linux_amd64
# On main branch: compute CalVer version, publish release, upload assets.
# ANVIL_SERVER_URL is injected by CI. ANVIL_TOKEN must be set as a CI secret.
if [ "$ANVIL_BRANCH" = "main" ] || [ "$ANVIL_BRANCH" = "refs/heads/main" ]; then
if [ -z "${ANVIL_TOKEN:-}" ]; then
echo "ERROR: ANVIL_TOKEN secret not set. Run: anvil ci set-secret ANVIL_TOKEN <pat>"
exit 1
fi
export ANVIL_CLI="$PWD/target/release/anvil"
VERSION=$(bash ci/release.sh)
echo "==> Publishing release $VERSION"
cp target/release/anvil "runner-dist/anvil_runner_linux_arm64_${VERSION}"
cp target/x86_64-unknown-linux-gnu/release/anvil "runner-dist/anvil_runner_linux_amd64_${VERSION}"
"$ANVIL_CLI" release create \
--tag "$VERSION" \
--title "anvil-cli $VERSION" \
--body "Runner binaries for linux/amd64 and linux/arm64." \
--repo fangorn/anvil-cli
"$ANVIL_CLI" release upload "$VERSION" \
"runner-dist/anvil_runner_linux_arm64_${VERSION}" \
--repo fangorn/anvil-cli
"$ANVIL_CLI" release upload "$VERSION" \
"runner-dist/anvil_runner_linux_amd64_${VERSION}" \
--repo fangorn/anvil-cli
echo "==> Published release $VERSION"
fi
depends_on: [test, clippy, fmt]
cache:
key: Cargo.lock