217 lines
6.9 KiB
Markdown
217 lines
6.9 KiB
Markdown
## gh-action-bump-version
|
|
|
|
GitHub Action for automated npm version bump.
|
|
|
|
This Action bumps the version in package.json and pushes it back to the repo.
|
|
It is meant to be used on every successful merge to master but
|
|
you'll need to configure that workflow yourself. You can look to the
|
|
[`.github/workflows/push.yml`](./.github/workflows/push.yml) file in this project as an example.
|
|
|
|
**Attention**
|
|
|
|
Make sure you use the `actions/checkout@v2` (or later) action!
|
|
|
|
**Private repos**
|
|
|
|
To use this Action with `${{ secrets.GITHUB_TOKEN }}` in a private repo, you must set the `contents: write` [permission for the token](https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs) to write to the package.json file specified in the workflow.
|
|
|
|
```yml
|
|
# .github/workflows/[your_workflow].yml
|
|
|
|
jobs:
|
|
publish:
|
|
...
|
|
permissions:
|
|
contents: write
|
|
```
|
|
|
|
**Migration: Version v9 and up**
|
|
|
|
Remove the 'actions/setup-node@v1' step from your action.yml file
|
|
```
|
|
- name: 'Setup Node.js'
|
|
uses: 'actions/setup-node@v1'
|
|
with:
|
|
node-version: 16
|
|
```
|
|
|
|
⚠️ **Windows** is not fully supported (see [#193](https://github.com/phips28/gh-action-bump-version/issues/193)), if someone uses windows, and wants to run this action, happy to review your PR ;)
|
|
|
|
### Workflow
|
|
|
|
* Based on the commit messages, increment the version from the latest release.
|
|
* If the string "BREAKING CHANGE", "major" or the Attention pattern `refactor!: drop support for Node 6` is found anywhere in any of the commit messages or descriptions the major
|
|
version will be incremented.
|
|
* If a commit message begins with the string "feat" or includes "minor" then the minor version will be increased. This works
|
|
for most common commit metadata for feature additions: `"feat: new API"` and `"feature: new API"`.
|
|
* If a commit message contains the word "pre-alpha" or "pre-beta" or "pre-rc" then the pre-release version will be increased (for example specifying pre-alpha: 1.6.0-alpha.1 -> 1.6.0-alpha.2 or, specifying pre-beta: 1.6.0-alpha.1 -> 1.6.0-beta.0)
|
|
* All other changes will increment the patch version.
|
|
* Push the bumped npm version in package.json back into the repo.
|
|
* Push a tag for the new version back into the repo.
|
|
|
|
### Usage:
|
|
|
|
|
|
#### **wording:**
|
|
Customize the messages that trigger the version bump. It must be a string, case sensitive, comma separated (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
minor-wording: 'add,Adds,new'
|
|
major-wording: 'MAJOR,cut-major'
|
|
patch-wording: 'patch,fixes' # Providing patch-wording will override commits
|
|
# defaulting to a patch bump.
|
|
rc-wording: 'RELEASE,alpha'
|
|
```
|
|
#### **version-type:**
|
|
Override the version type taken from the commit message. Usefull when manually running workflow via workflow_dispatch
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
version-type: 'minor'
|
|
```
|
|
#### **default:**
|
|
Set a default version bump to use (optional - defaults to patch). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
default: prerelease
|
|
```
|
|
|
|
#### **preid:**
|
|
Set a preid value will building prerelease version (optional - defaults to 'rc'). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
default: prerelease
|
|
preid: 'prc'
|
|
```
|
|
|
|
#### **tag-prefix:**
|
|
Prefix that is used for the git tag (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag-prefix: 'v'
|
|
```
|
|
|
|
#### **tag-suffix:**
|
|
Suffix that is used for the git tag (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag-suffix: '-beta'
|
|
```
|
|
|
|
#### **skip-tag:**
|
|
The tag is not added to the git repository (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
skip-tag: 'true'
|
|
```
|
|
|
|
#### **skip-commit:**
|
|
No commit is made after the version is bumped (optional). Must be used in combination with `skip-tag`, since if there's no commit, there's nothing to tag. Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
skip-commit: 'true'
|
|
skip-tag: 'true'
|
|
```
|
|
|
|
#### **skip-push:**
|
|
If true, skip pushing any commits or tags created after the version bump (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
skip-push: 'true'
|
|
```
|
|
|
|
#### **PACKAGEJSON_DIR:**
|
|
Param to parse the location of the desired package.json (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
PACKAGEJSON_DIR: 'frontend'
|
|
```
|
|
|
|
#### **TARGET-BRANCH:**
|
|
Set a custom target branch to use when bumping the version. Useful in cases such as updating the version on master after a tag has been set (optional). Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
target-branch: 'master'
|
|
```
|
|
|
|
#### **commit-message:**
|
|
Set a custom commit message for version bump commit. Useful for skipping additional workflows run on push. Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
commit-message: 'CI: bumps version to {{version}} [skip ci]'
|
|
```
|
|
|
|
#### **bump-policy:**
|
|
Set version bump ignore policy. Useful for pull requests between branches with version bumps. Options are as follows:
|
|
|
|
* `'all'` (default): checks all commit messages and skips bump if any previous bumps found
|
|
* `'ignore'`: always bump regardless of whether bumps included in commit messages
|
|
* `'last-commit'`: bump if last commit was not version bump
|
|
|
|
Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
bump-policy: 'ignore'
|
|
```
|
|
|
|
#### [DEPRECATED] **push:**
|
|
**DEPRECATED** Set false you want to avoid pushing the new version tag/package.json. Example:
|
|
```yaml
|
|
- name: 'Automated Version Bump'
|
|
uses: 'phips28/gh-action-bump-version@master'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
push: false
|
|
```
|