Browse Source

add release script

main
Nicolas Massé 5 years ago
parent
commit
166f50fea3
  1. 70
      release.sh

70
release.sh

@ -0,0 +1,70 @@
#!/bin/bash
set -Eeuo pipefail
NAME="wimip"
GIT_SHA="$(git --no-pager describe --always --dirty)"
BUILD_TIME="$(date '+%s')"
LFLAGS="-X main.gitsha=$GIT_SHA -X main.compiled=$BUILD_TIME"
VERSION="${VERSION:-$GIT_SHA}"
echo "Version: $VERSION"
release() {
echo "Building $NAME-$VERSION for $GOOS/$GOARCH (${GOARM:-default})..."
if [ "$GOOS" == "windows" ]; then
EXT=".exe"
else
EXT=""
fi
if [ "$GOARCH" == "arm" -a -n "${GOARM:-}" ]; then
ARM_EXT="-armv$GOARM"
else
ARM_EXT=""
fi
export GOARCH GOOS
if [ -n "${GOARM:-}" ]; then
export GOARM
fi
CGO_ENABLED=0 go build -ldflags " -w $LFLAGS" -o "bin/$NAME$EXT" cli/main.go
tar -czf "release/$NAME-$GOOS-$GOARCH$ARM_EXT.tar.gz" -C bin/ "$NAME$EXT"
(cd release && sha1sum "$NAME-$GOOS-$GOARCH$ARM_EXT.tar.gz" > "$NAME-$GOOS-$GOARCH$ARM_EXT.tar.gz.sha1")
rm -f "bin/$NAME$EXT"
}
rm -rf bin release
mkdir -p bin release
go generate ./...
while read configuration; do
unset GOOS
unset GOARCH
unset GOARM
eval "$configuration"
release
done <<EOF
GOOS=linux GOARCH=amd64
GOOS=linux GOARCH=arm64
GOOS=linux GOARCH=arm GOARM=5
GOOS=darwin GOARCH=amd64
EOF
CURRENT_TAG="$(git describe --tags --exact-match 2>/dev/null || true)"
CURRENT_COMMIT_ID="$(git rev-parse HEAD)"
if [ -z "$CURRENT_TAG" ]; then
echo "Currently not on a tag. Skipping GitHub release creation..."
exit 0
fi
gh auth status
if ! gh release list | cut -f3 | grep -qx "$VERSION"; then
echo "Creating the $VERSION release..."
gh release create "$VERSION" release/* -d --target "$CURRENT_COMMIT_ID" -n "Released $VERSION" --title "$VERSION"
else
gh release upload "$VERSION" --clobber release/*
fi
Loading…
Cancel
Save