36 lines
1.4 KiB
Bash
Executable File
36 lines
1.4 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
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=$arch go build -trimpath -buildvcs=false \
|
|
-ldflags="-s -w" -o "$stage/dogama-init" ./cmd/dogama-init
|
|
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"
|