name: Release on: push: branches: [main, alpha, beta, rc, v4] repository_dispatch: types: [release] concurrency: group: ${{ github.workflow }}-${{ github.event.number || github.ref }} cancel-in-progress: true env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} permissions: contents: write id-token: write pull-requests: write jobs: release: name: Release if: github.repository_owner == 'TanStack' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6.0.1 with: fetch-depth: 0 - name: Start Nx Agents run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" - name: Setup Tools uses: tanstack/config/.github/setup@main - name: Run Tests run: pnpm run test:ci - name: Stop Nx Agents if: ${{ always() }} run: npx nx-cloud stop-all-agents # - name: Check for Changesets marked as major # id: major # run: | # echo "found=false" >> $GITHUB_OUTPUT # regex="(major)" # shopt -s nullglob # for file in .changeset/*.md; do # if [[ $(cat $file) =~ $regex ]]; then # echo "found=true" >> $GITHUB_OUTPUT # fi # done - name: Run Changesets (version or publish) id: changesets uses: changesets/action@v1.5.3 with: version: pnpm run changeset:version publish: pnpm run changeset:publish commit: 'ci: Version Packages' title: 'ci: Version Packages' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # - name: Auto-merge Changesets PR # if: steps.changesets.outputs.hasChangesets == 'true' && steps.major.outputs.found == 'false' # run: | # gh pr merge --squash "$PR_NUMBER" # gh api --method POST /repos/$REPO/dispatches -f 'event_type=release' # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # REPO: ${{ github.repository }} # PR_NUMBER: ${{ steps.changesets.outputs.pullRequestNumber }} - name: Comment on PRs about release if: steps.changesets.outputs.published == 'true' uses: tanstack/config/.github/comment-on-release@main with: published-packages: ${{ steps.changesets.outputs.publishedPackages }}