Skip to content

Commit

Permalink
chore(repo): Introduce canary releases from main
Browse files Browse the repository at this point in the history
The main branch will produce canary releases until the
next major version is ready for release. To produce a
staging and production release, open a PR from the main-v4
branch.
  • Loading branch information
dimkl committed Oct 19, 2023
1 parent 08fbca6 commit b9e739a
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .changeset/red-monkeys-sing.md
Original file line number Diff line number Diff line change
@@ -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.
36 changes: 36 additions & 0 deletions .github/workflows/release-canary.yml
Original file line number Diff line number Diff line change
@@ -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 }}
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -37,6 +38,7 @@
"test:integration:remix": "echo 'placeholder'",
"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"
Expand Down
18 changes: 18 additions & 0 deletions scripts/canary.mjs
Original file line number Diff line number Diff line change
@@ -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');
}

0 comments on commit b9e739a

Please sign in to comment.