From 542946fd74d5f6c74270e11b10ab00fa17ae2bd2 Mon Sep 17 00:00:00 2001 From: Claudia Meadows Date: Tue, 24 Sep 2024 22:11:10 -0700 Subject: [PATCH] Fix and clarify workflow logic, add branch versioning - `pr.yml` should've been deleted a long time ago. Its functionality was already elsewhere, and that's since been folded into `test.yml`. - I added automatic `release-v*` and `main-v*` versioning. - Renamed `merge.yml` to `push-release.yml` and `push-main.yml` to `pr-create-release.yml` so it's clearer what they're actually listening to. I also modified their display names. --- .../{push-main.yml => pr-create-release.yml} | 2 +- .github/workflows/pr.yml | 31 ------------------- .../workflows/{merge.yml => push-release.yml} | 9 +++--- .github/workflows/rollback.yml | 1 + scripts/set-versioned-branch.sh | 15 +++++++++ 5 files changed, 21 insertions(+), 37 deletions(-) rename .github/workflows/{push-main.yml => pr-create-release.yml} (83%) delete mode 100644 .github/workflows/pr.yml rename .github/workflows/{merge.yml => push-release.yml} (82%) create mode 100644 scripts/set-versioned-branch.sh diff --git a/.github/workflows/push-main.yml b/.github/workflows/pr-create-release.yml similarity index 83% rename from .github/workflows/push-main.yml rename to .github/workflows/pr-create-release.yml index 21f3ab69..0d23b00e 100644 --- a/.github/workflows/push-main.yml +++ b/.github/workflows/pr-create-release.yml @@ -1,4 +1,4 @@ -name: Warn on pushing to `release` +name: Warn on opening a PR to `release` on: pull_request_target: types: [opened] diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml deleted file mode 100644 index 8dd82e63..00000000 --- a/.github/workflows/pr.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: pr - -on: - push: - branches: [ main ] - - workflow_dispatch: - -concurrency: prr:pre-release - -jobs: - pr: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm ci - - run: npm run build - - run: npx pr-release pr --verbose --target release --source main --compact --verbose --minimize-semver-change - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - # The following will publish a prerelease to npm - - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - name: Setup NPM Auth - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - run: npx pr-release infer-prerelease --preid=next --target release --source main --verbose --publish --minimize-semver-change - name: Publish diff --git a/.github/workflows/merge.yml b/.github/workflows/push-release.yml similarity index 82% rename from .github/workflows/merge.yml rename to .github/workflows/push-release.yml index bf6c3e8e..aa713949 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/push-release.yml @@ -1,12 +1,11 @@ -name: merge +name: Create release when pushing to `release` on: push: - branches: [ release ] - + branches: [release] workflow_dispatch: -concurrency: prr:deploy +concurrency: merge-release jobs: merge: @@ -24,7 +23,7 @@ jobs: - run: npx pr-release merge --target release --source main --commit --force --clean --changelog ./docs/recent-changes.md --compact --minimize-semver-change env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - + - run: bash scripts/set-versioned-branch.sh release # The following will publish the release to npm - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc name: Setup NPM Auth diff --git a/.github/workflows/rollback.yml b/.github/workflows/rollback.yml index fe6dc64a..51847fbd 100644 --- a/.github/workflows/rollback.yml +++ b/.github/workflows/rollback.yml @@ -19,3 +19,4 @@ jobs: - run: npx pr-release rollback --verbose --target release --source main --verbose --ignore 'package*' --ignore docs/changelog.md --ignore docs/recent-changes.md env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + - run: bash scripts/set-versioned-branch.sh release diff --git a/scripts/set-versioned-branch.sh b/scripts/set-versioned-branch.sh new file mode 100644 index 00000000..75f3b876 --- /dev/null +++ b/scripts/set-versioned-branch.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +base="$1" + +if [[ -z "$base" ]]; then + echo '::error::Base branch is missing. Invoke as `bash scripts/set-versioned-branch.sh BASE' >&2 + exit 1 +fi + +major=$(node -pe 'require("./package.json").version.replace(/\..*$/,"")') +# Can't do a force push due to branch protection rules. +git checkout "${base}" +git checkout -B "${base}-v${major}" +git push origin "${base}-v${major}"