patch release (#108) #254
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| branches: [main, '*-pre', '*-maint'] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: false | |
| env: | |
| NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
| SERVER_PRESET: 'node-server' | |
| permissions: | |
| contents: write | |
| id-token: write | |
| pull-requests: write | |
| jobs: | |
| release: | |
| name: Release | |
| if: "!contains(github.event.head_commit.message, 'ci: changeset release')" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check for changesets | |
| id: changesets | |
| run: | | |
| CHANGESET_FILES=$(ls .changeset/*.md 2>/dev/null | grep -v README.md || true) | |
| if [ -z "$CHANGESET_FILES" ]; then | |
| echo "has_changesets=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "has_changesets=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Start Nx Agents | |
| if: steps.changesets.outputs.has_changesets == 'true' | |
| 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 | |
| if: steps.changesets.outputs.has_changesets == 'true' | |
| run: pnpm run test:ci --parallel=3 | |
| - name: Stop Nx Agents | |
| if: ${{ always() && steps.changesets.outputs.has_changesets == 'true' }} | |
| run: npx nx-cloud stop-all-agents | |
| - name: Enter Pre-Release Mode | |
| if: "contains(github.ref_name, '-pre') && !hashFiles('.changeset/pre.json')" | |
| run: pnpm changeset pre enter pre | |
| - name: Version Packages | |
| run: pnpm run changeset:version | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Commit and Push Version Changes | |
| id: commit | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add . | |
| if git commit -m "ci: changeset release"; then | |
| git push | |
| echo "committed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Determine dist-tag | |
| if: steps.commit.outputs.committed == 'true' | |
| id: dist-tag | |
| run: | | |
| BRANCH="${GITHUB_REF_NAME}" | |
| if [[ "$BRANCH" == *-pre ]]; then | |
| echo "prerelease=true" >> "$GITHUB_OUTPUT" | |
| elif [[ "$BRANCH" == *-maint ]]; then | |
| echo "tag=maint" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "latest=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Publish Packages | |
| if: steps.commit.outputs.committed == 'true' | |
| run: pnpm run changeset:publish ${{ steps.dist-tag.outputs.tag && format('--tag {0}', steps.dist-tag.outputs.tag) }} | |
| - name: Create GitHub Release | |
| if: steps.commit.outputs.committed == 'true' | |
| run: node scripts/create-github-release.mjs ${{ steps.dist-tag.outputs.prerelease == 'true' && '--prerelease' }} ${{ steps.dist-tag.outputs.latest == 'true' && '--latest' }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |