1
0
mirror of https://github.com/Luzifer/github-publish.git synced 2024-09-19 16:02:57 +00:00
github-publish/golang.sh
Knut Ahlers f1b606d816
Add multi-package support
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2018-01-20 20:29:47 +01:00

90 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
curl -sL https://raw.githubusercontent.com/Luzifer/github-publish/master/SHA256SUMS | \
grep "golang.sh" | sha256sum -c || exit 2
( which zip 2>&1 1>/dev/null ) || {
( which apk 2>&1 1>/dev/null ) && apk add --update zip
( which apt-get 2>&1 1>/dev/null ) && apt-get install -y zip
}
function step {
echo "===> $@..."
}
VERSION=$(git describe --tags --exact-match || echo "ghpublish__notags")
PWD=$(pwd)
godir=${PWD/${GOPATH}\/src\/}
REPO=${REPO:-$(echo ${godir} | cut -d '/' -f 3)}
GHUSER=${GHUSER:-$(echo ${godir} | cut -d '/' -f 2)}
ARCHS=${ARCHS:-"linux/amd64 linux/arm darwin/amd64 windows/amd64"}
DEPLOYMENT_TAG=${DEPLOYMENT_TAG:-${VERSION}}
PACKAGES=${PACKAGES:-$(echo ${godir} | cut -d '/' -f 1-3)}
BUILD_DIR=${BUILD_DIR:-.build}
step Retrieve dependencies
go get github.com/aktau/github-release
go get github.com/mitchellh/gox
step Test code
go vet ${PACKAGES}
go test ${PACKAGES}
step Compile program
mkdir ${BUILD_DIR}
gox -ldflags="-X main.version=${VERSION}" -osarch="${ARCHS}" \
-output="${BUILD_DIR}/{{.Dir}}_{{.OS}}_{{.Arch}}"\
${PACKAGES}
step Generate binary SHASUMs
cd ${BUILD_DIR}
sha256sum * > SHA256SUMS
step Packing archives
for file in *; do
if [ "${file}" = "SHA256SUMS" ]; then
continue
fi
if [[ ${file} == *linux* ]]; then
tar -czf "${file%%.*}.tar.gz" "${file}"
else
zip "${file%%.*}.zip" "${file}"
fi
rm "${file}"
done
step Generate archive SHASUMs
sha256sum * >> SHA256SUMS
grep -v 'SHA256SUMS' SHA256SUMS > SHA256SUMS.tmp
mv SHA256SUMS.tmp SHA256SUMS
step Publish builds to Github
if ( test "${VERSION}" == "ghpublish__notags" ); then
echo "No tag present, stopping build now."
exit 0
fi
if [ -z "${GITHUB_TOKEN}" ]; then
echo "Please set \$GITHUB_TOKEN environment variable"
exit 1
fi
step Create a drafted release
github-release release --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${DEPLOYMENT_TAG} --draft || true
step Upload build assets
for file in ${REPO}_* SHA256SUMS; do
github-release upload --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${file} --file ${file}
done
cd -
rm -rf ${BUILD_DIR}
echo -e "\n\n=== Recorded checksums ==="
cat SHA256SUMS