From c1cbc5a627491a415dc7f75c643dda744b5deb51 Mon Sep 17 00:00:00 2001 From: sherwinski Date: Tue, 12 Nov 2024 12:36:03 -0500 Subject: [PATCH] build: automate release flow Adds a GitHub Action to perform the following: - Kick off whenever a new commit is made on the default (main) branch - Bump package version in `package.json` - Version bump follows semantic versioning - Avoid automatically publishing new major versions to prevent unintended releases - Publish updated package to registry (npmjs.com) - Add a new git tag - Generate release notes and add them to the changelog - Publish a new release to GitHub, includes change notes in release body --- .github/workflows/release.yml | 0 .releaserc.json | 136 ++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .releaserc.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e69de29 diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..0fe09eb --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,136 @@ +{ + "branches": [ + "main" + ], + "tagFormat": "${version}", + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "releaseRules": [ + { + "breaking": true, + "release": "minor" + }, + { + "type": "feat", + "release": "minor" + }, + { + "type": "fix", + "release": "patch" + }, + { + "type": "docs", + "release": "patch" + }, + { + "type": "perf", + "release": "patch" + }, + { + "type": "refactor", + "release": "patch" + }, + { + "type": "style", + "release": "patch" + }, + { + "type": "test", + "release": "patch" + }, + { + "type": "build", + "release": "patch" + }, + { + "type": "ci", + "release": "patch" + }, + { + "type": "chore", + "scope": "deps", + "release": "patch" + } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "writerOpts": { + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "docs", + "section": "Documentation", + "hidden": false + }, + { + "type": "deps", + "section": "Dependency Updates", + "hidden": false + }, + { + "type": "chore", + "hidden": true + }, + { + "type": "style", + "hidden": true + }, + { + "type": "refactor", + "hidden": true + }, + { + "type": "perf", + "hidden": true + }, + { + "type": "test", + "hidden": true + } + ] + } + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md", + "changelogTitle": "# Changelog" + } + ], + [ + "@semantic-release/npm", + { + "pkgRoot": "." + } + ], + [ + "@semantic-release/git", + { + "assets": [ + "bundles/**", + "esm2015/**", + "fesm2015/**", + "lib/**", + "package.json", + "CHANGELOG.md" + ], + "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes} [skip ci]" + } + ], + "@semantic-release/github" + ] + } \ No newline at end of file