π Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
π€ Allows you to automatically:
- 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.
β Other features include:
- 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.
- 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: ''
-
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[@]}"
- (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
- 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
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
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.
- bump-everywhere: Repository itself is automatically versioned & released using its own action
- privacy.sexy
- safe-email
- ez-consent
- aws-static-site-with-cd
Sponsor π. Consider one time or recurring donation on GitHub Sponsors or any other way (undrgroundwires.dev/donate), every penny you leave will help development and maintenance of the project .
Star π€©. If you do cannot do that you can just give it a star β . It helps me to see that the project is appreciated.
Badge π. If you use the project, feel free to use the badge in the 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)
CI/CD is fully automated for this repo using different GIT events and GitHub actions.