Closes #905 ## Summary This PR sets up changesets with the aim to simplify the process of documenting changes committed to the codebase, as well as automating versioning packages and publishing them to npm. ## Changes - initialised [changesets](https://github.com/changesets/changesets) in the repository - (separately from this PR) installed [changesets bot](https://github.com/apps/changeset-bot) in the repository (it will check if a submitted PR includes a changeset file and inform if found or not) - added `.github/workflows/release.yml`: The workflow creates a PR with version bumps and related changelog files' updates, each time a commit containing changeset file(s) is added to the main branch. After merging this auto-generated PR, this workflow will also auto-publish the released packages to npm and add git tags. - added the following scripts to the root `package.json`: - `changeset`: should be run to generate changeset files, that describe changes made to the code, - `prerelease`: runs linting and testing on packages affected by the changes in a PR - `release`: runs `changeset publish` and is used by the `release` workflow then the above-mentioned auto-generated PR is merged to the main branch
40 lines
957 B
YAML
40 lines
957 B
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
concurrency: release-${{ github.ref }}
|
|
|
|
jobs:
|
|
release:
|
|
name: Release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup Node.js 16.x
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16.x
|
|
|
|
- name: Install Dependencies
|
|
run: npm ci
|
|
|
|
- name: Create Release Pull Request or Publish to npm
|
|
id: changesets
|
|
uses: changesets/action@v1
|
|
with:
|
|
publish: npm run 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'
|
|
# uses: Ilshidur/action-discord@0.3.2
|
|
# with:
|
|
# args: 'The project {{ EVENT_PAYLOAD.repository.full_name }} has been deployed.'
|