name: Release on: push: branches: - main concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: release: name: Changesets Release # Prevents action from creating a PR on forks if: github.repository == 'apollographql/graphql-testing-library' runs-on: ubuntu-latest # Permissions necessary for Changesets to push a new branch and open PRs # (for automated Version Packages PRs), and request the JWT for provenance. # More info: https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#adding-permissions-settings permissions: contents: write pull-requests: write id-token: write steps: - name: Checkout repo uses: actions/checkout@v4 with: # Fetch entire git history so Changesets can generate changelogs # with the correct commits fetch-depth: 0 - name: Check for pre.json file existence id: check_files uses: andstor/file-existence-action@v3.0.0 with: files: ".changeset/pre.json" - name: Append NPM token to .npmrc run: | cat << EOF > "$HOME/.npmrc" provenance=true //registry.npmjs.org/:_authToken=$NPM_TOKEN EOF env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: node-version: 20.x - name: Install pnpm and dependencies uses: pnpm/action-setup@v4 with: version: 9 run_install: true - name: Create release PR or publish to npm + GitHub id: changesets if: steps.check_files.outputs.files_exists == 'false' uses: changesets/action@v1 with: version: pnpm run changeset-version publish: pnpm run changeset-publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Send a Slack notification on publish if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true' id: slack uses: slackapi/slack-github-action@v1.27.0 with: # Slack channel id, channel name, or user id to post message # See also: https://api.slack.com/methods/chat.postMessage#channels # You can pass in multiple channels to post to by providing # a comma-delimited list of channel IDs channel-id: "C07K7QQ93FW" payload: | { "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "A new version of `@apollo/graphql-testing-library` was released: <https://github.com/apollographql/graphql-testing-library/releases/tag/v${{ fromJson(steps.changesets.outputs.publishedPackages)[0].version }}|v${{ fromJson(steps.changesets.outputs.publishedPackages)[0].version }}> :rocket:" } } ] } env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}