diff --git a/SHA256SUMS b/SHA256SUMS index 81fe72e..933ca40 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -1,2 +1,2 @@ 05e4977d541b2ef07c757acca912b7b58b379fb425eceb3a1f53c829a78a4aa4 docker2aci.sh -99cbc21bf39f58533b3f5e8a969499cf93e3dd36fb64c7f301bd2c6761125742 golang.sh +08103fd85ca1273aaf5ec2b35b75ad789d2352da6c7f6ad1aff4c5754dd133e4 golang.sh diff --git a/golang.sh b/golang.sh index 2dd3634..40686e9 100755 --- a/golang.sh +++ b/golang.sh @@ -2,19 +2,23 @@ set -euo pipefail curl -sL https://raw.githubusercontent.com/Luzifer/github-publish/master/SHA256SUMS | - grep "golang.sh" | sha256sum -c || exit 2 + grep "golang.sh" | sha256sum -c || exit 2 (which zip 2>&1 1>/dev/null) || { - (which apk 2>&1 1>/dev/null) && apk add --update gawk zip - (which apt-get 2>&1 1>/dev/null) && apt-get update && apt-get install -y zip + (which apk 2>&1 1>/dev/null) && apk add --update gawk zip + (which apt-get 2>&1 1>/dev/null) && apt-get update && apt-get install -y zip +} + +function log() { + echo "${@}" >&2 } function step() { - echo "===> $@..." >&2 + log "===> $@..." } function substep() { - echo "======> $@..." >&2 + log "======> $@..." } VERSION=$(git describe --tags --always || echo "dev") @@ -28,29 +32,34 @@ PACKAGES=(${PACKAGES:-$(echo ${godir} | cut -d '/' -f 1-3)}) BUILD_DIR=${BUILD_DIR:-.build} DRAFT=${DRAFT:-true} FORCE_SKIP_UPLOAD=${FORCE_SKIP_UPLOAD:-false} -MOD_MODE=${MOD_MODE:-} +MOD_MODE=${MOD_MODE:-readonly} NO_TESTS=${NO_TESTS:-false} +go_params=( + "-mod=${MOD_MODE}" + -modcacherw + -trimpath +) + +step "Check go environment" go version step "Retrieve dependencies" -git clone "https://github.com/Luzifer/github-release.git" "${GOPATH}/src/github.com/Luzifer/github-release" -pushd "${GOPATH}/src/github.com/Luzifer/github-release" -GO111MODULE=on go install -popd +tool_gopath=$(mktemp -d) +trap "rm -rf ${tool_gopath}" EXIT + +substep "Install github-release" +GOPATH=${tool_gopath} go install \ + "${go_params}" \ + github.com/Luzifer/github-release@latest if [[ $NO_TESTS == false ]]; then - step "Test code" - go_params=() - - if [[ -n ${MOD_MODE} ]]; then - go_params+=(-mod="${MOD_MODE}") - fi - - go vet "${go_params[@]}" ${PACKAGES} - go test "${go_params[@]}" ${PACKAGES} + step "Test code" + go vet "${go_params[@]}" ${PACKAGES} + go test "${go_params[@]}" ${PACKAGES} fi +step "Extract changelog" changelog=$([ -f "${PWD}/History.md" ] && awk '/^#/ && ++c==2{exit}; /^#/f' "${PWD}/History.md" | tail -n +2 || echo "") step "Cleanup build directory if present" @@ -59,45 +68,45 @@ rm -rf ${BUILD_DIR} step "Compile program" mkdir ${BUILD_DIR} -build_params=("${go_params[@]}") -build_params+=( - -ldflags="-X main.version=${VERSION}" +build_params=( + -ldflags="-X main.version=${VERSION}" ) for package in "${PACKAGES[@]}"; do - for osarch in "${ARCHS[@]}"; do - export GOOS=${osarch%%/*} - export GOARCH=${osarch##*/} + for osarch in "${ARCHS[@]}"; do + export GOOS=${osarch%%/*} + export GOARCH=${osarch##*/} - [[ ${GOOS} == "windows" ]] && suffix=".exe" || suffix="" - outfile="${BUILD_DIR}/${package##*/}_${GOOS}_${GOARCH}${suffix}" + [[ ${GOOS} == "windows" ]] && suffix=".exe" || suffix="" + outfile="${BUILD_DIR}/${package##*/}_${GOOS}_${GOARCH}${suffix}" - substep "Building for ${osarch} into ${outfile}" + substep "Build for ${osarch} into ${outfile}" - go build \ - -o "${outfile}" \ - "${build_params[@]}" \ - "${package}" - done + go build \ + -o "${outfile}" \ + "${go_params[@]}" \ + "${build_params[@]}" \ + "${package}" + done done step "Generate binary SHASUMs" cd ${BUILD_DIR} sha256sum * >SHA256SUMS -step "Packing archives" +step "Pack archives" for file in *; do - if [ "${file}" = "SHA256SUMS" ]; then - continue - fi + if [ "${file}" = "SHA256SUMS" ]; then + continue + fi - if [[ ${file} == *linux* ]]; then - tar -czf "${file%%.*}.tar.gz" "${file}" - else - zip "${file%%.*}.zip" "${file}" - fi + if [[ ${file} == *linux* ]]; then + tar -czf "${file%%.*}.tar.gz" "${file}" + else + zip "${file%%.*}.zip" "${file}" + fi - rm "${file}" + rm "${file}" done step "Generate archive SHASUMs" @@ -105,38 +114,38 @@ sha256sum * >>SHA256SUMS grep -v 'SHA256SUMS' SHA256SUMS >SHA256SUMS.tmp mv SHA256SUMS.tmp SHA256SUMS -echo -e "\n\n=== Recorded checksums ===" +log -e "\n\n=== Recorded checksums ===" cat SHA256SUMS if [[ ${FORCE_SKIP_UPLOAD} == "true" ]]; then - echo "Upload is skipped, stopping build now." - exit 0 + log "Upload is skipped, stopping build now." + exit 0 fi step "Publish builds to Github" if ! git describe --tags --exact-match; then - echo "No tag present, stopping build now." - exit 0 + log "No tag present, stopping build now." + exit 0 fi if [ -z "${GITHUB_TOKEN}" ]; then - echo 'Please set $GITHUB_TOKEN environment variable' - exit 1 + log 'Please set $GITHUB_TOKEN environment variable' + exit 1 fi if [[ ${DRAFT} == "true" ]]; then - step "Create a drafted release" - echo "${changelog}" | github-release release --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${DEPLOYMENT_TAG} --description - --draft || true + step "Create a drafted release" + echo "${changelog}" | ${tool_gopath}/bin/github-release release --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${DEPLOYMENT_TAG} --description - --draft || true else - step "Create a published release" - echo "${changelog}" | github-release release --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${DEPLOYMENT_TAG} --description - || true + step "Create a published release" + echo "${changelog}" | ${tool_gopath}/bin/github-release release --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${DEPLOYMENT_TAG} --description - || true fi step "Upload build assets" for file in *; do - echo "- ${file}" - github-release upload --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${file} --file ${file} + substep ${file} + ${tool_gopath}/bin/github-release upload --user ${GHUSER} --repo ${REPO} --tag ${DEPLOYMENT_TAG} --name ${file} --file ${file} done cd -