#!/usr/bin/env bash # Build the x86_64 release asset on this host and publish it to the Forgejo # release for . CI (.forgejo/workflows/release.yml) only covers aarch64 — # there is no x86_64 runner on the instance, so this is the x86_64 path. # # Usage: FORGEJO_TOKEN=... scripts/build-release-local.sh v0.1.2 # # Does not create or push the tag: tag and push first, then run this so the # release body/asset set matches a real tag. Idempotent (assets are replaced). set -euo pipefail tag="${1:?usage: build-release-local.sh }" target=x86_64-unknown-linux-gnu root="$(cd "$(dirname "$0")/.." && pwd)" cd "$root" expected="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -1)" if [ "$tag" != "v$expected" ]; then echo "warn: tag $tag does not match Cargo.toml version $expected (--version will report $expected)" fi echo "==> cargo build --release --locked" cargo build --release --locked mkdir -p dist asset="onionwire-$target" cp "target/release/onionwire" "dist/$asset" strip "dist/$asset" (cd dist && sha256sum "$asset" > "$asset.sha256" && sha256sum -c "$asset.sha256") file "dist/$asset" "dist/$asset" --version echo "==> publishing to the release for $tag" scripts/publish-release.sh "$tag" "OnionWire $tag" scripts/release-body.md \ "dist/$asset" "dist/$asset.sha256"