Fix release-job.sh version var 25/16025/3
authorJessica Wagantall <jwagantall@linuxfoundation.org>
Fri, 28 Jun 2019 01:17:24 +0000 (18:17 -0700)
committerJessica Wagantall <jwagantall@linuxfoundation.org>
Fri, 12 Jul 2019 17:43:57 +0000 (10:43 -0700)
Allow only semantic release versions like
"v${SEMVER}" or "${SEMVER}".
Fail the script if the version is not valid.
Do not append any additional characters to the
release version during tagging and pushing steps.

In this case, if the user wants to use the prefixed
"v", they can define it in the releases/*.yaml as:
version: 'v1.0.0'

Issue: RELENG-2131
Change-Id: I71f32600d3e17ec117776be6764c2e45ee934bdd
Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
releasenotes/notes/fix_release_version_job-19f00b3c9b67c8c6.yaml [new file with mode: 0644]
shell/release-job.sh

diff --git a/releasenotes/notes/fix_release_version_job-19f00b3c9b67c8c6.yaml b/releasenotes/notes/fix_release_version_job-19f00b3c9b67c8c6.yaml
new file mode 100644 (file)
index 0000000..47529ae
--- /dev/null
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Allow only semantic release versions like "v${SEMVER}" or "${SEMVER}".
+    Fail the script if the version is not valid.
+    Do not append any additional characters to the release version during
+    tag and push steps.
index 88b285c..96ccffb 100644 (file)
@@ -85,11 +85,21 @@ for release_file in $release_files; do
         cat "$PATCH_DIR"/taglist.log
     popd
 
+    # Verify allowed versions
+    # Allowed versions are "v#.#.#" or "#.#.#" aka SemVer
+    allowed_version_regex="^((v?)([0-9]+)\.([0-9]+)\.([0-9]+))$"
+    if [[ ! $VERSION =~ $allowed_version_regex ]]; then
+        echo "The version $VERSION is not a semantic valid version"
+        echo "Allowed versions are "v#.#.#" or "#.#.#" aka SemVer"
+        echo "See https://semver.org/ for more details on SemVer"
+        exit 1
+    fi
+
     git checkout "$(awk '{print $NF}' "$PATCH_DIR/taglist.log")"
     git fetch "$PATCH_DIR/$PROJECT.bundle"
     git merge --ff-only FETCH_HEAD
-    git tag -am "$PROJECT $VERSION" "v$VERSION"
-    sigul --batch -c "$SIGUL_CONFIG" sign-git-tag "$SIGUL_KEY" v"$VERSION" < "$SIGUL_PASSWORD"
+    git tag -am "$PROJECT $VERSION" "$VERSION"
+    sigul --batch -c "$SIGUL_CONFIG" sign-git-tag "$SIGUL_KEY" "$VERSION" < "$SIGUL_PASSWORD"
     echo "Showing latest signature for $PROJECT:"
     git log --show-signature -n1
 
@@ -97,7 +107,7 @@ for release_file in $release_files; do
     ########## Merge Part ##############
     if [[ "$JOB_NAME" =~ "merge" ]]; then
         echo "Running merge"
-        git push origin "v$VERSION"
+        git push origin "$VERSION"
         lftools nexus release --server "$NEXUS_URL" "$STAGING_REPO"
         if [ "${MAVEN_CENTRAL_URL}" == 'None' ]; then
             echo "No Maven central url specified, not pushing to maven central"