bump-everywhere
🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Features
- Bump your semantic git tag by increasing the patch version.
- Create & commit a changelog file.
- If
npm
project then bumppackage.json
version and commit. - Check
README.md
file, if it has references to older version, update with never version. - Create a release on GitHub with auto-generated release notes.
- Zero-configuration for most use-cases, but can still be customized.
- It supports safe re-runs, it means that if you can run it for an already bumped or tagged repository, it'll not increase the version as everything is still up-to-date. It protects against recursive runs.
Usage
Option 1. Use GitHub actions
- uses: undergroundwires/bump-everywhere@master
with:
# Repository name with owner to bump & release. For example, undergroundwires/bump-everywhere
# (Optional) Default: ${{ github.repository }}
repository: ''
# Name of the user who will do the bump commit
# (Optional) Default: ${{ github.actor }}
user: ''
# Commit message that will be used in the bump commit
# (Optional) Default: ⬆️ bump everywhere to {{version}}
commit-message: ''
# Personal access token (PAT) used to clone & push to the repository.
# If you use default, it'll not trigger other actions, but your own PAT then it triggers new actions
# (Optional) Default: ${{ github.token }}
git-token: ''
# The type of the GitHub release
# Options: 'release' | 'prerelease' | 'draft' | 'none' (does not release)
# (Optional) Default: 'release'
release-type: ''
# Personal access token (PAT) used to release to GitHub.
# Used only if release-type is not "none"
# If you use default, it'll not trigger other actions, but your own PAT then it triggers new actions
# (Optional) Default: ${{ github.token }}
release-token: ''
# Git branch to push the changes such as version tags, CHANGELOG file, version changes...
# Configuring this should not be needed for most use-cases.
# Use this only if you DO NOT use a single main default branch (e.g. `master` or `main`).
# (Optional) Default: Default "git clone" behavior. Checks out to default branch of remote.
branch: ''
Option 2. Use Docker
-
To get the image you can either:
- Pull from docker hub using
docker pull undergroundwires/bump-everywhere:latest
- Or build image yourself using
docker build . --tag undergroundwires/bump-everywhere:latest
- Pull from docker hub using
-
Run with arguments:
args=( # Required: --repository "undergroundwires/privacy.sexy" --user "bot-user" --git-token "GitHub PAT for pushes" --release-type "prerelease" --release-token "GitHub PAT for releases" --commit-message "⬆️ bump to {{version}}" # Optional: --branch 'custom branch name' ) docker run undergroundwires/bump-everywhere "${args[@]}"
npm
Option 3. Use - (Optionally) install globally:
npm install -g bump-everywhere
- or locally:
npm install bump-every-where --save-dev
- or locally:
- Run
npx bump-everywhere <parameters...>
- See docker example for parameter usage
Option 4. Use scripts
- Ensure
bash
(4 or newer),git
,curl
,jq
exists in your environment- On Alpine:
apk add bash git curl jq
- On Windows:
choco install git curl jq
and use Git Bash
- On Alpine:
- Clone this repository:
git clone https://github.com/undergroundwires/bump-everywhere
- or optionally add this repository as git submodule:
git submodule add https://github.com/undergroundwires/bump-everywhere
- or optionally add this repository as git submodule:
- Call the script:
bash "scripts/bump-everywhere.sh" <parameters>
- See docker example for parameter usage
Updating minor & major versions
bump-everywhere only increases your patch versions. You manually tag your last commit to update major & minor versions.
E.g. :
git commit -m "bumped version to 1.4.0" --allow-empty
git tag 1.4.0
git push && git push origin 1.4.0
All scripts
You can also use following scripts individually (check script files for usage, prerequisites & dependencies):
- bump-and-tag-version.sh: Automate versioning.
- create-github-release.sh: Automate creating GitHub releases
-
print-changelog.sh: Automate creation of changelogs, e.g.
CHANGELOG.md
. - configure-github-repo.sh: Set-up CI/CD user for current repository.
- log-commits.sh: Filters & logs commits as bullet points in markdown form.
-
bump-npm-version.sh: Updates
packages.json
to match the latest version. -
bump-readme-versions.sh: Updates old references to
README.md
to the latest version.
Some example usages
- bump-everywhere: Repository itself is automatically versioned & released using its own action
- privacy.sexy
- safe-email
- ez-consent
- aws-static-site-with-cd
Support
Sponsor
Star
Badge README.md
of repository where you use bump-everywhere so we can have larger community that can help improving the project. It would look like ). You can add following in your markdown file:
[![Auto-versioned by bump-everywhere](https://github.com/undergroundwires/bump-everywhere/blob/master/badge.svg?raw=true)](https://github.com/undergroundwires/bump-everywhere)
GitOps
CI/CD is fully automated for this repo using different GIT events and GitHub actions.