Files

34 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
set -eu
version=${1:-}
case "$version" in
v[0-9]*.[0-9]*.[0-9]*) ;;
*) echo "usage: $0 vMAJOR.MINOR.PATCH" >&2; exit 2 ;;
esac
commit=$(git rev-parse HEAD)
epoch=${SOURCE_DATE_EPOCH:-$(git show -s --format=%ct HEAD)}
release_dir="dist/dogama-${version}"
if [ -e "$release_dir" ]; then
echo "$release_dir already exists; refusing to overwrite it" >&2
exit 1
fi
mkdir -p "$release_dir"
for arch in amd64 arm64; do
stage="$release_dir/linux-$arch"
mkdir -p "$stage"
CGO_ENABLED=0 GOOS=linux GOARCH=$arch go build -trimpath -buildvcs=false \
-ldflags="-s -w -X main.version=$version -X main.commit=$commit" -o "$stage/dogama" ./cmd/dogama
CGO_ENABLED=0 GOOS=linux GOARCH=$arch go build -trimpath -buildvcs=false \
-ldflags="-s -w -X main.version=$version -X main.commit=$commit" -o "$stage/dogama-agent" ./cmd/dogama-agent
go version -m "$stage/dogama" > "$stage/build-info.txt"
tar --sort=name --owner=0 --group=0 --numeric-owner --mtime="@$epoch" \
-C "$release_dir" -czf "$release_dir/dogama-${version}-linux-$arch.tar.gz" "linux-$arch"
done
go list -m -json all | SOURCE_DATE_EPOCH=$epoch go run ./tools/sbom > "$release_dir/dogama-${version}.spdx.json"
(cd "$release_dir" && sha256sum ./*.tar.gz ./*.spdx.json > SHA256SUMS)
echo "release artifacts written to $release_dir"