From 42d266153c97f9b8465fd767d8ca41c214801d9f Mon Sep 17 00:00:00 2001 From: siosonel Date: Mon, 23 Oct 2023 14:33:12 -0500 Subject: [PATCH] use pre* version type based on the branch name, and do not use the commit hash in the tag, but delete/re-tag in pre* version types --- .github/workflows/CD-publish-packages.yml | 16 ++++++------- build/ci-version-update.sh | 28 +++++++++++++++-------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.github/workflows/CD-publish-packages.yml b/.github/workflows/CD-publish-packages.yml index 9a3691fe1c..eea5ce5e89 100644 --- a/.github/workflows/CD-publish-packages.yml +++ b/.github/workflows/CD-publish-packages.yml @@ -4,7 +4,7 @@ on: push: branches: - publish-packages - - fake-release + - fake-publish paths-ignore: - '**.md' - '**.txt' @@ -92,15 +92,15 @@ jobs: if [[ "$BRANCH" != "publish-packages" && "$BRANCH" != "release-chain" && "$BRANCH" != "master" && ${{ github.event_name }} != 'workflow_dispatch' ]]; then echo "skipping publishing" else - ./build/ci-npm-publish.sh "$UPDATED" + TAG=v$(node -p "require('./package.json').version") + REMOTETAG=$(git ls-remote origin refs/tags/$TAG) + if [[ "$REMOTETAG" != "" ]]; then + echo "Tag $TAG already exists on remote='origin' and may have been published already" + exit 1 + fi + ./build/ci-npm-publish.sh "$UPDATED" if [[ "$BRANCH" != "master" ]]; then - TAG=v$(node -p "require('./package.json').version") - REMOTETAG=$(git ls-remote origin refs/tags/$TAG) - if [[ "$REMOTETAG" != "" ]]; then - echo "Tag $TAG already exists on remote='origin'" - exit 1 - fi echo "merging to master" N=$(git rev-list master.. --count) git fetch --depth=N origin $BRANCH:$BRANCH diff --git a/build/ci-version-update.sh b/build/ci-version-update.sh index ca45d35297..1eb620257d 100755 --- a/build/ci-version-update.sh +++ b/build/ci-version-update.sh @@ -19,6 +19,11 @@ elif [[ "$NOTES" == *"Fixes:"* ]]; then VERTYPE=patch fi +BRANCH=$(git rev-parse --abbrev-ref HEAD) +if [[ "$VERTYPE" != "pre"* && "$BRANCH" != "publish-"* && "$BRANCH" != "release-chain"* && "$BRANCH" != "master" ]]; then + VERTYPE="pre$VERTYPE" +fi + ########## # CONTEXT ########## @@ -35,11 +40,15 @@ fi ######################## VERSION="$(node -p "require('./package.json').version")" -if [[ "$(grep 'Unreleased' CHANGELOG.md)" == "" ]]; then - echo "No unreleased changes to publish" - exit 1 +if [[ "$VERTYPE" != "pre"* ]]; then + if [[ "$(grep 'Unreleased' CHANGELOG.md)" == "" ]]; then + echo "No unreleased changes to publish" + exit 1 + fi + + # only update the change log if the version type is not prepatch, preminor, prerelease, pre* + sed -i.bak "s|Unreleased|$VERSION|" CHANGELOG.md fi -sed -i.bak "s|Unreleased|$VERSION|" CHANGELOG.md ################# # COMMIT CHANGES @@ -47,11 +56,6 @@ sed -i.bak "s|Unreleased|$VERSION|" CHANGELOG.md npm i --package-lock-only TAG="v$VERSION" -BRANCH=$(git rev-parse --abbrev-ref HEAD) -if [[ "$BRANCH" != "release" && "$BRANCH" != "master" ]]; then - HASH=$(git rev-parse --short HEAD) - TAG="$TAG-$HASH" -fi COMMITMSG="$TAG $UPDATED" echo "$COMMITMSG" echo "committing version change ..." @@ -59,6 +63,12 @@ git config --global user.email "PPTeam@STJUDE.ORG" git config --global user.name "PPTeam CI" git add --all git commit -m "$COMMITMSG" +if [[ "$VERTYPE" == "pre"* ]]; then + # delete existing tags that match + git update-ref -d refs/heads/$TAG + git push origin :refs/tags/$TAG +fi + git tag $TAG BRANCH=$(git rev-parse --abbrev-ref HEAD) git push origin $BRANCH