diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c14762e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,25 @@ +name: Release + +on: + push: + branches: + - main + - rc/* + +permissions: + contents: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: cycjimmy/semantic-release-action@v6.0.0 + with: + extra_plugins: | + conventional-changelog-conventionalcommits + @semantic-release/exec + env: + FORCE_COLOR: 1 + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ github.token }} diff --git a/.releaserc.yaml b/.releaserc.yaml new file mode 100644 index 0000000..71761c5 --- /dev/null +++ b/.releaserc.yaml @@ -0,0 +1,24 @@ +plugins: + - - '@semantic-release/commit-analyzer' + - preset: 'conventionalcommits' + - - '@semantic-release/release-notes-generator' + - preset: 'conventionalcommits' + - - '@semantic-release/github' + - successCommentCondition: false + + # Update dist, in case Dependabot PRs merged without doing so + - - '@semantic-release/exec' + - prepareCmd: 'pnpm install && pnpm run build' + + - - '@semantic-release/git' + - assets: + - 'dist/**' + - 'package.json' # commit updated version back to source + message: 'chore(release): update dist and package.json' + + - '@semantic-release/npm' + +branches: + - main + - name: rc/* + prerelease: '${name.replace(/^rc\//, "rc-")}' diff --git a/README.md b/README.md index a9523df..9029449 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # parser-js One that parses + +## Release + +See [RELEASE.md](./RELEASE.md). diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..84f04e6 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,14 @@ +# Release + +This project uses [semantic-release](https://github.com/semantic-release/semantic-release) +with [conventional commits](https://www.conventionalcommits.org/) to trigger releases. + +To trigger a release in this project, merge a commit to `main` prefixed with: + +1. `fix:` to trigger a patch release, +2. `feat:` to trigger minor, or +3. Use `!:` or the `BREAKING CHANGES: ` footer to trigger major + +Pre-releases can be made by pushing to an `rc/*` branch. + +For more details, see the [Semantic Release](https://illuminate.atlassian.net/wiki/spaces/PENG/pages/17952735277/Semantic+Release) documentation.