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