diff --git a/.changeset/red-monkeys-sing.md b/.changeset/red-monkeys-sing.md new file mode 100644 index 0000000000..2dacb87ff3 --- /dev/null +++ b/.changeset/red-monkeys-sing.md @@ -0,0 +1,5 @@ +--- +--- + +Introduce `@canary` releases and change current LTS branch to `main-v4` to be used as +base branch for `@staging` and `@latest` releases until next major version is stable. diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml new file mode 100644 index 0000000000..4f08f5e887 --- /dev/null +++ b/.github/workflows/release-canary.yml @@ -0,0 +1,36 @@ +name: Canary release +run-name: Canary release from ${{ github.ref_name }} + +on: + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + canary-release: + if: ${{ github.repository == 'clerkinc/javascript' }} + runs-on: ${{ vars.RUNNER_LARGE }} + env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ vars.TURBO_TEAM }} + TURBO_REMOTE_ONLY: true + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup + uses: ./.github/actions/setup + + - name: Version packages for canary + id: version-packages + run: npm run version:canary | tail -1 >> "$GITHUB_OUTPUT" + + - name: Canary release + if: steps.version-packages.outputs.success == '1' + run: npm run release:canary + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 740c609add..b5502a94c8 100644 --- a/package.json +++ b/package.json @@ -86,9 +86,11 @@ "changeset": "npx changeset", "changeset:empty": "npm run changeset -- --empty", "version": "npx changeset version && ./scripts/version-info.sh", + "version:canary": "./scripts/canary.mjs", "version:snapshot": "./scripts/snapshot.mjs", "version:staging": "./scripts/staging.mjs", "release": "FORCE_COLOR=1 npm run build -- --force && npx changeset publish && git push --follow-tags", + "release:canary": "FORCE_COLOR=1 npm run build && npx changeset publish --tag canary --no-git-tag", "release:snapshot": "FORCE_COLOR=1 npm run build && npx changeset publish --tag snapshot --no-git-tag", "release:staging": "FORCE_COLOR=1 npm run build && npx changeset publish --tag staging --no-git-tag", "release:verdaccio": "if [ \"$(npm config get registry)\" = \"https://registry.npmjs.org/\" ]; then echo 'Error: Using default registry' && exit 1; else TURBO_CONCURRENCY=4 npm run build && npx changeset publish --no-git-tag; fi", diff --git a/scripts/canary.mjs b/scripts/canary.mjs new file mode 100755 index 0000000000..e3e552c01c --- /dev/null +++ b/scripts/canary.mjs @@ -0,0 +1,18 @@ +#!/usr/bin/env zx + +import 'zx/globals'; + +import { constants } from './common.mjs'; + +await $`npx json -I -f ${constants.ChangesetConfigFile} -e "this.changelog = false"`; + +const res = await $`npx changeset version --snapshot canary`; +const success = !res.stderr.includes('No unreleased changesets found'); + +await $`git checkout HEAD -- ${constants.ChangesetConfigFile}`; + +if (success) { + echo('success=1'); +} else { + echo('success=0'); +}