From 61149cbf216efafd308bacae373e95329bb40838 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Tue, 22 Oct 2019 11:51:26 -0700 Subject: [PATCH] Add tag check to release script --- releasing/README.md | 4 ++++ releasing/cloudbuild.sh | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/releasing/README.md b/releasing/README.md index 62d950a08..bba700bc8 100644 --- a/releasing/README.md +++ b/releasing/README.md @@ -5,12 +5,16 @@ [Google Cloud Build]: https://cloud.google.com/cloud-build [semver]: https://semver.org [Go modules]: https://github.com/golang/go/wiki/Modules +[multi-module repo]: https://github.com/go-modules-by-example/index/blob/master/009_submodules/README.md This document describes how to perform a [semver] release of one of the [Go modules] in this repository. These modules release independently. +See this [multi-module repo] tagging discussion +for an explanation of the `foo/v2.3.0` tags applied below. + ## Module summaries [`sigs.k8s.io/kustomize/kustomize`]: #sigsk8siokustomizekustomize diff --git a/releasing/cloudbuild.sh b/releasing/cloudbuild.sh index 5debd200d..da18c10db 100755 --- a/releasing/cloudbuild.sh +++ b/releasing/cloudbuild.sh @@ -10,6 +10,23 @@ set -x module=$1 shift +# The following assumes git tags formatted like +# "api/v1.2.3" and splits on the slash. +# Goreleaser doesn't know what to do with this +# tag format, and fails when creating an archive +# with a / in the name. +fullTag=$(git describe) +export tModule=${fullTag%/*} +export tSemver=${fullTag#*/} +echo "tModule=$tModule" +echo "tSemver=$tSemver" +if [ "$module" != "$tModule" ]; then + # Tag and argument sanity check + echo "Unexpected mismatch: moduleFromArg=$module, moduleFromTag=$tModule" + echo "Either the module arg to this script is wrong, or the git tag is wrong." + exit 1 +fi + configFile=$(mktemp) cat <$configFile project_name: $module @@ -44,6 +61,8 @@ builds: - windows goarch: - amd64 +archive: + name_template: "{{ .ProjectName }}_${tSemver}_{{ .Os }}_{{ .Arch }}" EOF cat $configFile