Files
weave/bin/release
T

66 lines
1.7 KiB
Bash
Executable File

#! /bin/bash
set -e
set -o nounset
# Preparation
## Get the new version number from the most recent tag
LATEST_TAG=$(git describe --abbrev=0 --match='v*')
VERSION=${LATEST_TAG#v}
echo Attempt to build distributables for version $VERSION
# NB does not check that this tag is on master
echo
echo == Sanity checks
## Check that the version doesn't already exist by looking at github
## releases
if curl -sSf https://api.github.com/repos/zettio/weave/releases/$LATEST_TAG 2>/dev/null; then
echo Release $LATEST_TAG already exists on GitHub
echo https://github.com/zettio/weave/releases/$LATEST_TAG
exit 1
fi
## Clone the repo at the tag and go there
RELEASE_DIR=releases/$LATEST_TAG
mkdir -p releases
git clone -q -b $LATEST_TAG . $RELEASE_DIR
cd $RELEASE_DIR
## Check that the top changelog entry is this version
latest_changelog=$(grep -o "Release v.*" -m1 ./CHANGELOG.md)
if ! [ `echo "$latest_changelog" | grep -o 'v[^ ]*'` == $LATEST_TAG ]; then
echo Latest changelog entry $latest_changelog does not match
echo the latest tag $LATEST_TAG
exit 1
fi
echo Sanity checks OK for releasing tag $LATEST_TAG
echo
echo == Build and test
## Inject the version numbers and build the distributables
## (library versions?)
sed -i "/var version = / c\var version = \"$VERSION\"" weaver/main.go
make
## Run tests with the distributables, including version check
v=$(./weaver/weaver --version)
if ! [ "$v" == "weaver $VERSION" ]; then
echo Version of distributable "$v" does not match tag $LATEST_TAG
exit 1
fi
make tests
echo Build and tests OK
# Publish
## Either leave the distributables in a directory for the dev to
## upload, or upload them automatically?