From 4032eadd84352849642c922f761c6af42add9bcb Mon Sep 17 00:00:00 2001 From: Konstantin Shuplenkov Date: Wed, 5 Oct 2022 16:47:17 +0300 Subject: [PATCH 1/2] fix(ci): release script could not find previous tag in some cases --- scripts/release/find_latest_tag.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/release/find_latest_tag.js b/scripts/release/find_latest_tag.js index 4193c327dc6..0eb070446f9 100644 --- a/scripts/release/find_latest_tag.js +++ b/scripts/release/find_latest_tag.js @@ -9,7 +9,7 @@ if (!version) { } (async () => { - const tags = (await execute('git tag -l --sort=-v:refname')); + const tags = await execute('git tag -l --sort=-v:refname'); const isPrerelease = semver.prerelease(version) !== null; const parsedVersion = semver.parse(version); @@ -38,6 +38,12 @@ if (!version) { } } + + if (!result) { + // try to find any previous versions + result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor - 1}\.*$`, 'mgi')); + } + if (!result) { console.log(`Can't find latest tag for the version ${version}`); process.exit(1); From 8a527f5e2a5b5782caa7440c39f39a09fd45979e Mon Sep 17 00:00:00 2001 From: Konstantin Shuplenkov Date: Wed, 5 Oct 2022 17:45:45 +0300 Subject: [PATCH 2/2] fix(ci): release script could not find previous tag in some cases --- scripts/release/find_latest_tag.js | 10 ++------- scripts/release/release.sh | 33 ++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/scripts/release/find_latest_tag.js b/scripts/release/find_latest_tag.js index 0eb070446f9..dac5e0999e9 100644 --- a/scripts/release/find_latest_tag.js +++ b/scripts/release/find_latest_tag.js @@ -4,7 +4,7 @@ const execute = require('../utils/execute'); const [ version ] = process.argv.slice(2); if (!version) { - console.log('usage example: yarn node find_latest_tag.js v0.21.0'); + console.error('usage example: yarn node find_latest_tag.js v0.21.0'); process.exit(1); } @@ -38,14 +38,8 @@ if (!version) { } } - - if (!result) { - // try to find any previous versions - result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor - 1}\.*$`, 'mgi')); - } - if (!result) { - console.log(`Can't find latest tag for the version ${version}`); + console.error(`Can't find latest tag for the version ${version}`); process.exit(1); } diff --git a/scripts/release/release.sh b/scripts/release/release.sh index 005433159ef..7b6ace1a52f 100755 --- a/scripts/release/release.sh +++ b/scripts/release/release.sh @@ -8,7 +8,29 @@ DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # get current version PACKAGE_VERSION=$(cat $DIR/../../package.json|grep version|head -1|awk -F: '{ print $2 }'|sed 's/[", ]//g') -RELEASE_TYPE="$1" +cmd_usage="Usage: yarn release [options] + + Options: + -t --type - release or prerelease + -f --from - tag to build changelog from + -h --help - show help +" + +for i in "$@" +do +case ${i} in + -h|--help) + echo "$cmd_usage" + exit 0 + ;; + -t=*|--type=*) + RELEASE_TYPE="${i#*=}" + ;; + -f=*|--from=*) + LATEST_TAG="${i#*=}" + ;; +esac +done # if parameter is empty, get release type from current version if [ -z "$RELEASE_TYPE" ] @@ -23,7 +45,7 @@ fi if [[ $RELEASE_TYPE != "release" ]] && [[ $RELEASE_TYPE != "prerelease" ]] then - echo "release or prerelease are the only acceptable options" + echo cmd_usage exit 1 fi @@ -44,8 +66,11 @@ yarn node $DIR/bump_version.js "$RELEASE_TYPE" NEW_PACKAGE_VERSION=$(cat $DIR/../../package.json|grep version|head -1|awk -F: '{ print $2 }'|sed 's/[", ]//g') -# get last tag for changelog -LATEST_TAG=$(yarn node $DIR/find_latest_tag.js $NEW_PACKAGE_VERSION) +if [ -z "$LATEST_TAG" ] +then + # get last tag for changelog + LATEST_TAG=$(yarn node $DIR/find_latest_tag.js $NEW_PACKAGE_VERSION) +fi # generate changelog yarn node $DIR/generate_changelog.js $LATEST_TAG