build: add pre-release check that validates the version name (#29551)

Currently with the release of "8.0.0-beta.10", the Bazel npm packag accidentally
was stamped with an incorrect version placeholder: `8.0.0-beta.10+1.sha-a28b3e3`.

This can happen because the placeholder is based on latest tag that matches the
Semver format. e.g. if `HEAD` equals to the commit that has the latest tag, the
version name will be correct and refer to the tag name (e.g. `8.0.0-beta.10`). Though
if the latest commit is not tagged with the most recent tag, the version
name will also include the SHA of the commit (e.g.  `8.0.0-beta.10+1.sha-a28b3e3`).

We can ensure that we don't accidentally release versions from a more recent commit
that shouldn't be part of the release by adding a pre-release check that ensures that
the `BUILD_SCM_VERSION` Bazel status variable matches the expected version format.

PR Close #29551
This commit is contained in:
Paul Gschwendtner 2019-03-27 19:30:29 +01:00 committed by Miško Hevery
parent f8c7c3c09c
commit 8badf9808a
2 changed files with 18 additions and 2 deletions

View File

@ -1,5 +1,23 @@
#!/usr/bin/env bash
# Runs the Bazel workspace status command in order to ensure that the version placeholder
# will be replaced with the proper version name when building the release output.
# Ensure that the stamping script is executed within the project directory.
cd $(dirname ${0})/../..
# The "0.0.0-PLACEHOLDER" is based on the value of the "BUILD_SCM_VERSION" status variable.
versionName=$(node tools/bazel_stamp_vars.js | grep -e "BUILD_SCM_VERSION" | cut -d " " -f2)
if [[ ! ${versionName} =~ ^[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc).[0-9]+)?$ ]]; then
echo "ERROR: The release will currently have the following version: ${versionName}"
echo "This does not match the version format for releases to NPM."
echo ""
echo "Please ensure that the most recent commit in the current branch is tagged"
echo "with the proper version tag."
exit 1
fi
# Verify peer deps constraints and package.json before publishing to npm
# There should be no npm errors

View File

@ -18,8 +18,6 @@ function _exec(str) {
return execSync(str).toString().trim();
}
console.error('Running', process.argv.join(' '));
function onError() {
console.error('Failed to execute:,', process.argv.join(' '));
console.error('');