An opinionated GitHub Action to ease the release of a repository using semantic versioning
Minimal setup to enable semantic release on any repository
-
Step 1: Add the following content inside
.github/workflows/release-that.yamlfilename: Release that on: [push] jobs: release-that: runs-on: ubuntu-latest permissions: id-token: write contents: write issues: write pull-requests: write steps: - name: Checkout sources uses: actions/checkout@v4 - name: Release That uses: rlespinasse/release-that@v1
-
Step 2: Enjoy your automatic release system
Whether to make a release in dry-run mode. The outputs act like a release was published.
- uses: rlespinasse/release-that@v1
with:
dry-run: trueRemove prefix from released version, like v1.0.0 -> 1.0.0 (doesn't apply to major tag)
- uses: rlespinasse/release-that@v1
with:
without-prefix: trueActivate the publication a major tag based on released version. Possible values true, false, and auto.
If this tag already exists, it will be overwritten.
- uses: rlespinasse/release-that@v1
with:
major-tag: trueBy default, the value is auto to activate it (like true) on some conditions, otherwise, it's skip (like false).
- the repository is a GitHub Action due to metadata file presence
action.ymloraction.yaml(to follow GitHub Action recommandation) - do not hesitate to propose the next condition through issue or pull-request
Whether to use a Personal Access Token instead of the default GitHub Token for release
- uses: rlespinasse/release-that@v1
with:
github-token: ${{ secrets.YOUR_PERSONAL_ACCESS_TOKEN }}By default ${{ github.token }} is used to make a release.
Due to limitation for security concerns, if you want to build a workflows that react when a new release is made, you must use a Personal Access Token.
On repositories created before 2023-02-02, the default token was enough to let this action do its job.
Now, new repository will always need to setup permissions to work properly.
Please refer to setup documentation.
Tip
If you get a error on your workflow run about EGITNOPERMISSION Cannot push to the Git repository., you can add persist-credentials: false to fix it
- name: Checkout sources
uses: actions/checkout@v4
with:
persist-credentials: false- major_tag_published: Whether a major tag was published (
trueorfalse) - major_tag: Value of the published major tag, otherwise empty (e.g.
v1)
And the following outputs from cycjimmy/semantic-release-action (see Under the wood section).
- new_release_published: Whether a new release was published (
trueorfalse) - new_release_version: Version of the new release. (e.g.
1.3.0) - new_release_major_version: Major version of the new release. (e.g.
1) - new_release_minor_version: Minor version of the new release. (e.g.
3) - new_release_patch_version: Patch version of the new release. (e.g.
0) - last_release_version: Version of the previous release, if there was one. (e.g.
1.2.0)
This is a wrapper around cycjimmy/semantic-release-action action with
- No mandatory configuration like
package.jsonor.releasercfiles - Support of Default branches
- with the addition of
vN.xkind of branches
- with the addition of
- Auto-publication of a GitHub release with changelog based on the commit history