diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8e24e396a..4148e3f86 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,6 +25,8 @@ jobs: steps: - name: ⬇️ Checkout repo uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: ⎔ Setup pnpm uses: pnpm/action-setup@v2.2.4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..0a99c3349 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +name: 🦋 Changesets Release + +on: + push: + branches: + - main + +jobs: + release: + name: 🦋 Changesets Release + runs-on: buildjet-4vcpu-ubuntu-2204 + if: | + github.repository == 'triggerdotdev/trigger.dev' + outputs: + published_packages: ${{ steps.changesets.outputs.publishedPackages }} + published: ${{ steps.changesets.outputs.published }} + steps: + - name: 🛑 Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + + - name: ⬇️ Checkout repo + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: ⎔ Setup pnpm + uses: pnpm/action-setup@v2.2.4 + with: + version: 7.18 + + - name: ⎔ Setup node + uses: buildjet/setup-node@v3 + with: + node-version: 18 + cache: "pnpm" + + - name: 📥 Download deps + run: pnpm install --frozen-lockfile + + - name: 🔎 Type check + run: pnpm run typecheck + + - name: 🔐 Setup npm auth + run: | + echo "registry=https://registry.npmjs.org" >> ~/.npmrc + echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc + + # This action has two responsibilities. The first time the workflow runs + # (initial push to the `main` branch) it will create a new branch and + # then open a PR with the related changes for the new version. After the + # PR is merged, the workflow will run again and this action will build + + # publish to npm. + - name: 🚀 PR / Publish + id: changesets + uses: changesets/action@v1 + with: + version: pnpm run changeset:version + commit: "chore: Update version for release" + title: "chore: Update version for release" + publish: pnpm run changeset:release + createGithubReleases: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/CHANGESETS.md b/CHANGESETS.md index 86fa3ccbe..b16222c10 100644 --- a/CHANGESETS.md +++ b/CHANGESETS.md @@ -4,23 +4,22 @@ Trigger.dev uses [changesets](https://github.com/changesets/changesets) to manag ## Adding a changeset -To add a changeset, use `pnpm run changeset:add` and follow the instructions [here](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md). Please only ever select one of our public packages when adding a changeset, which currently are: +To add a changeset, use `pnpm run changeset:add` and follow the instructions [here](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md). Please only ever select one of our public packages when adding a changeset. -- `@trigger.dev/sdk` -- `@trigger.dev/integration-sdk` -- `@trigger.dev/github` -- `@trigger.dev/notion` -- `@trigger.dev/slack` -- `@trigger.dev/shopify` -- `@trigger.dev/resend` - -## Release instructions +## Release instructions (local only) Based on the instructions [here](https://github.com/changesets/changesets/blob/main/docs/intro-to-using-changesets.md) 1. Run `pnpm run changeset:version` 2. Run `pnpm run changeset:release` +## Release instructions (CI) + +Please follow the best-practice of adding changesets in the same commit as the code making the change with `pnpm run changeset:add`, as it will allow our release.yml CI workflow to function properly: + +- Anytime new changesets are added in a commit in the `main` branch, the [release.yml](./.github/workflows/release.yml) workflow will run and will automatically create/update a PR with a fresh run of `pnpm run changeset:version`. +- When the version PR is merged into `main`, the release.yml workflow will automatically run `pnpm run changeset:release` to build and release packages to npm. + ## Pre-release instructions 1. Add changesets as usual `pnpm run changeset:add`