Skip to content
CLI to create GitHub Releases
JavaScript Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.eslintrc.yml Improve Package experience Dec 20, 2019
.gitignore feat: add check for semver Dec 22, 2019
.releases.json.sample feat: add json support, add test, fix version check Dec 21, 2019
.releases.yml.sample It works Dec 17, 2019
GHPR feat: add GHRC and GHPR Jan 9, 2020
GHR feat: add GHRC and GHPR Jan 9, 2020
GHRC feat: add GHRC and GHPR Jan 9, 2020
package.json fix: wrong version in package json Feb 6, 2020

Programmatically create your GitHub Releases

You are handling dozen of repositories and you realize rapidly that going over all the repos to create those releases is dull and slow? Yeah, same here.


You can run the to install the dependency of the project and create a symlink in your ~/.local/bin folder. If ~/.local/bin is not in your path, you can add it by adding export PATH=$PATH:$HOME/.local/bin to your shell config file.

Set Up

First thing, create a personal token from GitHub and check the repo scope. Now save that token in a .env file:


Defining the releases

You can define your releases with a yaml file with the following structure:

# The organisation or user that owns the repository
  # The repository for which you want to create a release
    # The tag marking your release, this is mandatory
    tag: "v1.0.0"
    # Name for the release for GHR, Title of the PR for GHPR, optional, default to tag value
    name: "Version 1"
    # Branch to use for the release for GHR, branch against which create the PR for GHPR, optional, default to master
    branch: "master"
    # Description of your release for GHR, Description of the PR for GHPR, optional, default to empty string
    body: "# CHANGELOG\n\nNow using GHR\n"
    # Specify if release is a draft, optional, default to false
    draft: false
    # Specify if release is not production ready, optional, default to false
    prerelease: false
    # For GHRC - Specify the base branch from which creating the RC, optional, default to 'develop'
    ref: 'dev'
    # For GHRC and GHPR - Specify the prefix for the RC branch, optional, default to 'rc/'
    branchPrefix: "RC/"

You can save your release list in a yaml file. When running GHR, it will automatically look for a .releases.yml file. You can pass a file path as an argument to specify another file to use: GHR myDopeReleases.yml

If you're allergic to yml, you can use a json file instead by either using the --json flag (it will look for .releases.json) or simply passing a json file as an argument: GHR releases.json

Creating the releases

You can run GHR simply with: GHR or GHR releases.yml to specify a different releases file. You can also do a dry run by using -n or --dryrun flags: GHR -n

GHR will check the latest release of your repository and won't create if the tag, name and branch are identical to what you're trying to create.

Creating a Release Candidate Branch

You can run GHRC to create a RC branch by running GHRC instead of GHR - supports the same flags and release file as GHR

Creating a Pull Request against Master

You can run GHPR to create a PR from your RC towards the release branch by running GHPR instead of GHR - supports the same flags and release file as GHR

You can’t perform that action at this time.