Merge pull request #71 from Khan/changeset-release/main #60
This file contains 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 | |
# This workflow will run changesets depending on two different scenarios: | |
# | |
# 1. If we are landing a specific commit into main (Author PR), then | |
# changesets will check if there are changes verifying the Markdown files | |
# generated automatically: | |
# | |
# a) There are new versions and there's NO Release PR, then the changesets | |
# action will create a new Release PR. | |
# | |
# b) There's a Release PR, then the changesets action will update the | |
# existing Release PR with the new commit. | |
# | |
# NOTE: (in both cases, changesets will modify the new version in | |
# package.json for each package, and will remove the MD files as part of the | |
# Release PR). | |
# | |
# 2. If we are landing the Release PR into main, then the changesets action | |
# will publish the changes to npm. | |
# | |
# For more info about this workflow, see: | |
# https://github.com/changesets/action#usage | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Khan/actions@shared-node-cache-v2 | |
with: | |
node-version: 20.x | |
- name: Create Release Pull Request or Publish to npm | |
id: changesets | |
uses: changesets/action@v1 | |
with: | |
publish: yarn publish:ci | |
env: | |
# We use a Personal Access Token here rather than the GITHUB_TOKEN | |
# so that it will trigger our other actions. The token has to be on | |
# the account of someone with appropriate access levels and given the | |
# repo scope. | |
GITHUB_TOKEN: ${{ secrets.KHAN_ACTIONS_BOT_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Send a Slack notification for web if a publish happens | |
if: steps.changesets.outputs.published == 'true' | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_FEI_FIREHOSE }} | |
SLACK_CHANNEL: fei-firehose | |
SLACK_MSG_AUTHOR: ${{ github.event.pull_request.user.login }} | |
SLACK_USERNAME: GithubGoose | |
SLACK_ICON_EMOJI: ":goose:" | |
SLACK_MESSAGE: "A new version of ${{ github.event.repository.name }} was published! 🎉 \nRelease notes → https://github.com/Khan/${{ github.event.repository.name }}/releases/" | |
SLACK_TITLE: "New Graphql-Flow release!" | |
SLACK_FOOTER: Graphql-Flow Slack Notification | |
MSG_MINIMAL: true |