π Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Allows you to automatically:
- Bump your sematic 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
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: ''
-
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:
docker run undergroundwires/bump-everywhere \ --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}}"
- (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
- You manually tag your last commit to update major & minor versions.
- E.g.
git commit -m "bumped version to 1.3.0" --allow-empty
git tag 1.3.0
git push && git push origin 1.3.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
- Give it a star β
- Feel free to use the badge in the
README.md
of repository where you use bump-everywhere:
[![Auto-versioned by bump-everywhere](https://github.com/undergroundwires/bump-everywhere/blob/master/badge.svg?raw=true)](https://github.com/undergroundwires/bump-everywhere)
- Automated tests: Run
.test.sh
files in./tests
- Manual tests: See documentation in docker-entrypoint
CI/CD is fully automated for this repo using different GIT events and GitHub actions.