diff --git a/.gitignore b/.gitignore index dac036e..92708fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bin metrix +releases diff --git a/Makefile b/Makefile index c1f6f36..e051f44 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,10 @@ install_dependencies: clean: rm -f bin/* +release: + GOOS=linux GOARCH=amd64 bash ./scripts/release.sh + GOOS=darwin GOARCH=amd64 bash ./scripts/release.sh + test: go test -v diff --git a/constants.go b/constants.go index 457c945..ec269b2 100644 --- a/constants.go +++ b/constants.go @@ -1,6 +1,7 @@ package main const timeFormat = "2006-01-02 15:04:05Z" +const VERSION = "0.1.1" var ( GITCOMMIT string diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 0000000..ccfeec7 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e + +# to be called with +# GOOS=linux GOARCH=amd64 bash ./scripts/release.sh + +BIN_NAME=metrix + +# revision and version +PROJECT_ROOT=$(grealpath $(dirname $0)/../) +GIT_COMMIT=$(git rev-parse --short HEAD) +GIT_STATUS=$(test -n "`git status --porcelain`" && echo "+CHANGES" || echo "") +GIT_REV=$GIT_COMMIT$GIT_STATUS +VERSION=$(grep VERSION $PROJECT_ROOT/constants.go | cut -d '"' -f 2) + +# dirs and paths +RELEASE_PATH=$PROJECT_ROOT/releases/$GIT_REV +NAME=$BIN_NAME-v$VERSION.$GOOS.$GOARCH +RELEASE_TMP_DIR=$RELEASE_PATH/$NAME +RELEASE_BIN=$RELEASE_TMP_DIR/$BIN_NAME + +echo "building in $RELEASE_PATH" +mkdir -p $RELEASE_TMP_DIR +go build -a -ldflags "-X main.GITCOMMIT $GIT_REV" -o $RELEASE_BIN +chmod a+x $RELEASE_BIN +cd $(dirname $RELEASE_BIN) && tar cfz $RELEASE_PATH/$NAME.tar.gz $BIN_NAME +rm -Rf $RELEASE_TMP_DIR