diff --git a/.changeset/config.json b/.changeset/config.json index cd72fe269b3..422e372038b 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,11 +1,16 @@ { "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", - "changelog": ["./changelog.js", { "repo": "clerkinc/javascript" }], + "changelog": [ + "./changelog.js", + { + "repo": "clerkinc/javascript" + } + ], "commit": false, "fixed": [], "linked": [], "access": "public", - "baseBranch": "origin/main", + "baseBranch": "main-v4", "updateInternalDependencies": "patch", "ignore": [], "snapshot": { @@ -16,4 +21,4 @@ "onlyUpdatePeerDependentsWhenOutOfRange": true, "updateInternalDependents": "always" } -} +} \ No newline at end of file diff --git a/.changeset/red-monkeys-sing.md b/.changeset/red-monkeys-sing.md new file mode 100644 index 00000000000..2dacb87ff3d --- /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 00000000000..4f08f5e8873 --- /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/.github/workflows/release-prod.yml b/.github/workflows/release-prod.yml index c6a97d3a126..5bfc6ca686d 100644 --- a/.github/workflows/release-prod.yml +++ b/.github/workflows/release-prod.yml @@ -4,7 +4,7 @@ run-name: Production release PR on: push: branches: - - main + - main-v4 concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/release-staging.yml b/.github/workflows/release-staging.yml index baa5849937d..362d6ad880c 100644 --- a/.github/workflows/release-staging.yml +++ b/.github/workflows/release-staging.yml @@ -4,7 +4,7 @@ run-name: Staging release from ${{ github.ref_name }} on: push: branches: - - main + - main-v4 concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.prettierignore b/.prettierignore index c5c306ca221..1b914235496 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,17 +1,18 @@ -coverage -node_modules -dist -build -coverage +.cache +.changeset .github .idea -.vscode -.turbo .next -.cache +.temp_integration +.turbo +.vscode .yalc -.changeset -package-lock.json -playground -examples /**/scripts/info.js +build +coverage +coverage +dist +examples +node_modules +package-lock.json +playground \ No newline at end of file diff --git a/package.json b/package.json index a953ab5f18d..38d04fc6348 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "nuke": "./scripts/nuke.sh", "prepare": "husky install", "release": "TURBO_FORCE=true FORCE_COLOR=1 npm run build -- --force && changeset publish && git push --follow-tags", + "release:canary": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && changeset publish --tag canary --no-git-tag", "release:snapshot": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && changeset publish --tag snapshot --no-git-tag", "release:staging": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && 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_FORCE=true TURBO_CONCURRENCY=4 npm run build && changeset publish --no-git-tag; fi", @@ -39,6 +40,7 @@ "turbo:clean": "turbo daemon clean", "update:lockfile": "npm run nuke && npm install -D --arch=x64 --platform=linux turbo && npm install -D --arch=arm64 --platform=darwin turbo", "version": "changeset version && ./scripts/version-info.sh", + "version:canary": "./scripts/canary.mjs", "version:snapshot": "./scripts/snapshot.mjs", "version:staging": "./scripts/staging.mjs", "yalc:all": "for d in packages/*/; do echo $d; cd $d; yalc push --replace --sig; cd '../../'; done" diff --git a/scripts/canary.mjs b/scripts/canary.mjs new file mode 100755 index 00000000000..e3e552c01c4 --- /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'); +}