Quick Release is a GitHub action that allows simple releases from a straightforward branching model leveraging a standard commit message convention and semantic versioning.
The intent is to encourage the practice of Continuous Integration, Continuous Delivery, and Continuous Deployment with GitHub by making it quick and easy to do so.
Quick Release uses conventional-commits, and libraries from conventional-changelog to both generate changelogs and to determine the next semantic version.
Multiple presets are compiled-in and selectable from this actions configuration.
Quick Release assumes you are leveraging Continuous Integration towards the main
branch. We believe developers should merge small pull requests there frequently.
Quick Release does not assume you want to release every single change immediately. Instead, it creates a branch called release
and a pull request pointing back to main
with any updated files related to the deployment (i.e., files with version number bumped) within it.
Start by adding the Quick Release GitHub Action to your repository actions.
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
# The Checkout actions at v2 and beyond prevent pushes as another user because `persist-credentials` is now set to true by default.
persist-credentials: false
- name: quick-release
uses: TheRealWaldo/[email protected]
with:
token: ${{ secrets.PAT }}
git-user-email: [email protected]
secrets.PAT
should be replaced by an appropriate Personal Access Token for the GitHub User you wish to commit on your behalf. As a best practice, use Encrypted Secrets to store and access this PAT in your actions.
[email protected]
should be replaced with your email address that you would like to use for any commits that Quick Release will do. See Setting your commit email address.
Input | Required? | Default | Description |
---|---|---|---|
token |
Yes | ${{ github.token }} |
GitHub Token to be used for creating pull requests, releases, etc. |
git-user-email |
Yes | Set the git email address to use when quick-release commits. | |
git-user-name |
Yes | quick-release bump | Set the git users full name to use when quick-release commits. |
github-username |
Yes | ${{ github.actor }} |
Set the Github username to use for creating/pushing updates. |
tag-prefix |
No | v | Tag Prefix for versions. |
base |
Yes | main | The base branch a release pull request should target. |
preset |
No | Preset to use for conventional-recommended-bump. If not specified will attempt to auto-detect. | |
replace-files |
No | Comma separated list of paths to files in which to replace the current version with the bumped version. | |
assignees |
No | Comma separated list of Github users to assign to pull-request. |
The following presets are currently supported:
Output | Description |
---|---|
recommendedVersion |
Proposed version based on commits. |
latestVersion |
Previous or current version from tags. |
changelog |
Changelog as generated from commits. |
pull-request |
Pull request number if one was created or updated. |
status |
What quick-release wound up doing. One of pull-request , release , or nothing . |