name: Changelog on: push: branches: - main jobs: release: name: Changelog runs-on: ubuntu-latest steps: - name: Check out code using Git uses: actions/checkout@v2 with: fetch-depth: 0 # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits - name: Set Node version to 14 uses: actions/setup-node@v2 with: node-version: 14.x cache: 'yarn' - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines env: CI: true - name: Create Release Pull Request or Publish to npm id: changesets uses: changesets/action@master with: # This expects you to have a script called release which does a build for your packages and calls changeset publish publish: yarn release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Send a Discord notification if a publish happens if: steps.changesets.outputs.published == 'true' id: discord-notification env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@0.3.2 with: args: 'A new release just went out! [Release notes →]()' - name: push main branch to latest branch if: steps.changesets.outputs.published == 'true' id: git-push-latest # Note: this will fail if "latest" and "main" have different commit history, # which is a good thing! Also, don't push if in pre-release mode. run: '(test -f .changeset/pre.json && echo "prerelease: skip pushing to latest branch.") || git push origin main:latest'