Skip to content

ChanTsune/release-with-commit

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

GitHub Action - Release-with-commit

This GitHub Action (written in TypeScript) wraps the GitHub Release API, specifically the Create a Release endpoint, to allow you to leverage GitHub Actions to create releases.

What makes this different

Most release actions either expect you to push a tag first, or they assume you are already using a commit-message convention like Conventional Commits.

This action is meant for a smaller, simpler case: “when the latest commit message looks like a release commit, create a release from it.”

  • Triggered by the commit message — on each push, the action checks the head commit message against the regexp you provide. If it matches, a release is created. If not, nothing happens. You do not need to push a tag separately.
  • Use regex captures in the release — captured values like $1, $2, and so on can be used in tag_name, release_name, and body, so the commit message can directly shape the release.
  • No required convention — you do not have to use Conventional Commits or set up a release plugin. Pick the pattern that fits your project.

Usage

Pre-requisites

Create a workflow .yml file in your .github/workflows directory. An example workflow is available below. For more information, reference the GitHub Help Documentation for Creating a workflow file.

Inputs

For more information on these inputs, see the API Documentation

  • regexp: The pattern of commit message. Create a release if commit message match this.
  • regexp_options: The option of regexp. for more details, see Advanced Searching With Flags
  • tag_name: The name of the tag for this release.
  • release_name: The name of the release.
  • body: Text describing the contents of the release. Optional, and not needed if using body_path.
  • body_path: A file with contents describing the release. Optional, and not needed if using body.
  • draft: true to create a draft (unpublished) release, false to create a published one. Default: false
  • prerelease: true to identify the release as a prerelease. false to identify the release as a full release. Default false
  • generate_release_notes: true to let GitHub automatically generate the release name and body from merged pull requests since the previous release. When enabled, release_name (name) and body/body_path (body) are used only if you set them explicitly; anything left unspecified is generated by GitHub. Default false

Outputs

For more information on these outputs, see the API Documentation for an example of what these outputs look like

  • id: The release ID
  • html_url: The URL users can navigate to in order to view the release. i.e. https://github.com/octocat/Hello-World/releases/v1.0.0
  • upload_url: The URL for uploading assets to the release, which could be used by GitHub Actions for additional uses, for example the @actions/upload-release-asset GitHub Action
  • created: The Boolean value of whether a release was created
  • tag_name: The name of the created tag_name

Example workflow - release with commit

On every push to a commit message matching the regexp, create a release:

name: Release with commit

on:
  push:
    branches:
      - master
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: ChanTsune/release-with-commit@v4.0.1
        with:
          regexp: "Release ((\\d+([.]\\d+)*)-(alpha|beta|rc)\\d*)((\\s|\\S)*)"
          regexp_options: "us"
          release_name: "version $1"
          tag_name: "v$1"
          body: "$5"
          draft: false
          prerelease: false
        env:
          GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' # This token is provided by Actions, you do not need to create your own token

This will create a Release, as well as a release event, which could be handled by a third party service, or by GitHub Actions for additional uses, for example the @actions/upload-release-asset GitHub Action. This uses the GITHUB_TOKEN provided by the virtual environment, so no new token is needed.

Contributing

We would love you to contribute to @ChanTsune/release-with-commit, pull requests are welcome! Please see the CONTRIBUTING.md for more information.

License

The scripts and documentation in this project are released under the MIT License

About

GitHub Action that creates a GitHub Release when a commit message matches your regular expression.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors