name: 🦋 Changesets Release permissions: contents: write on: push: branches: - main paths-ignore: - "docs/**" - "**.md" - ".github/CODEOWNERS" - ".github/ISSUE_TEMPLATE/**" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: release: name: 🦋 Changesets Release runs-on: ubuntu-latest permissions: contents: write packages: write pull-requests: write if: github.repository == 'triggerdotdev/trigger.dev' outputs: published: ${{ steps.changesets.outputs.published }} published_packages: ${{ steps.changesets.outputs.publishedPackages }} published_package_version: ${{ steps.get_version.outputs.package_version }} steps: - name: ⬇️ Checkout repo uses: actions/checkout@v4 with: fetch-depth: 0 - name: ⎔ Setup pnpm uses: pnpm/action-setup@v4 with: version: 8.15.5 - name: ⎔ Setup node uses: buildjet/setup-node@v4 with: node-version: 20.19.0 cache: "pnpm" - name: 📥 Download deps run: pnpm install --frozen-lockfile - name: 📀 Generate Prisma Client run: pnpm run generate - name: 🏗️ Build run: pnpm run build --filter "@trigger.dev/*" --filter "trigger.dev" - name: 🔎 Type check run: pnpm run typecheck --filter "@trigger.dev/*" --filter "trigger.dev" - 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 if: ${{ !env.ACT }} 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: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # - name: 🚀 PR / Publish (mock) # if: ${{ env.ACT }} # id: changesets # run: | # echo "published=true" >> "$GITHUB_OUTPUT" # echo "publishedPackages=[{\"name\": \"@xx/xx\", \"version\": \"1.2.0\"}, {\"name\": \"@xx/xy\", \"version\": \"0.8.9\"}]" >> "$GITHUB_OUTPUT" - name: 📦 Get package version if: steps.changesets.outputs.published == 'true' id: get_version run: | package_version=$(echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[0].version') echo "package_version=${package_version}" >> "$GITHUB_OUTPUT"