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.yaml
filename: 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: true
Remove 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: true
Activate 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: true
By 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.yml
oraction.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 (
true
orfalse
) - 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 (
true
orfalse
) - 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.json
or.releaserc
files - Support of Default branches
- with the addition of
vN.x
kind of branches
- with the addition of
- Auto-publication of a GitHub release with changelog based on the commit history