/bump-everywhere

🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.

Primary LanguageShellApache License 2.0Apache-2.0

bump-everywhere

🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.

contributions welcome Quality checks Bump & release Publish Test Code size Docker image size Auto-versioned by bump-everywhere

functions of bump-everywhere

Features

🤖 Allows you to automatically:

  • Bump your semantic git tag by increasing the patch version.
  • Create & commit a changelog file.
  • If npm project then bump package.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.

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
  • 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[@]}"

Option 3. Use npm

  1. (Optionally) install globally: npm install -g bump-everywhere
    • or locally: npm install bump-every-where --save-dev
  2. Run npx bump-everywhere <parameters...>

Option 4. Use scripts

  1. 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
  2. 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
  3. Call the script: bash "scripts/bump-everywhere.sh" <parameters>

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):

Some example usages

Support

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 Auto-versioned by bump-everywhere). 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.

GitOps flow