onionwire/scripts/build-release-local.sh

36 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Build the x86_64 release asset on this host and publish it to the Forgejo
# release for <tag>. 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 <tag>}"
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"