GitHub Action for creating GitHub Releases based on changelog.
This action creates GitHub Releases based on changelog that specified by changelog
option.
Currently, changelog format and supported tag names have the following rule:
-
This action uses parse-changelog to parse changelog. Only the changelog format accepted by parse-changelog is supported.
Basically, Keep a Changelog and similar formats are supported, but we recommend checking if parse-changelog can parse your project's changelog as you expected.
If the
changelog
option is not specified, the changelog is ignored and only the release created. -
The supported tag format is
v?MAJOR.MINOR.PATCH(-PRERELEASE)?(+BUILD_METADATA)?
. (leading "v", pre-release version, and build metadata are optional.) This is based on Semantic Versioning
Name | Required | Description | Type | Default |
---|---|---|---|---|
token | true 1 | GitHub token for creating GitHub Releases (see action.yml for more) | String | |
changelog | false | Path to changelog (variables $tag , $version , $prefix , and any string) |
String | |
title | false | Format of title (variables $tag , $version , $prefix , and any string) |
String | $tag |
draft | false | Create a draft release (true or false ) |
Boolean | false |
branch | false | Reject releases from commits not contained in branches that match the specified pattern (regular expression) | String | |
prefix | false | An optional pattern that matches a prefix for the release tag, before the version number (see action.yml for more) | String | |
ref | false | Fully-formed tag ref for this release (see action.yml for more) | String |
Name | Description |
---|---|
computed-prefix | The computed prefix, including '-' and 'v'. |
version | The version number extracted from the tag. The tag name is a concatenation of computed-prefix and version . |
name: Release
permissions:
contents: write
on:
push:
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/create-gh-release-action@v1
with:
# (Optional) Path to changelog.
changelog: CHANGELOG.md
# (Required) GitHub token for creating GitHub Releases.
token: ${{ secrets.GITHUB_TOKEN }}
name: Release
permissions:
contents: write
on:
push:
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/create-gh-release-action@v1
with:
# (Optional) Path to changelog.
changelog: CHANGELOG.md
# (Optional) Create a draft release.
# [default value: false]
draft: true
# (Required) GitHub token for creating GitHub Releases.
token: ${{ secrets.GITHUB_TOKEN }}
You can customize the title of the release by title
option.
Example of the created release.
name: Release
permissions:
contents: write
on:
push:
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/create-gh-release-action@v1
with:
# (Optional)
changelog: CHANGELOG.md
# (Optional) Format of title.
# [default value: $tag]
# [possible values: variables $tag, $version, and any string]
title: $version
# (Required) GitHub token for creating GitHub Releases.
token: ${{ secrets.GITHUB_TOKEN }}
If the changelog
option is not specified, the changelog is ignored and only the release created.
Example of the created release.
name: Release
permissions:
contents: write
on:
push:
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/create-gh-release-action@v1
with:
# (Required) GitHub token for creating GitHub Releases.
token: ${{ secrets.GITHUB_TOKEN }}
You can reject releases from commits not contained in branches that match the specified pattern by using branch
option.
name: Release
permissions:
contents: write
on:
push:
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/create-gh-release-action@v1
with:
# (Optional) Path to changelog.
changelog: CHANGELOG.md
# (Optional) Reject releases from commits not contained in branches
# that match the specified pattern (regular expression)
branch: main
# (Required) GitHub token for creating GitHub Releases.
token: ${{ secrets.GITHUB_TOKEN }}
This action has been tested for action runners hosted by GitHub. To use this action in self-hosted runners or in containers, you will need to install at least the following:
- bash, GNU Coreutils, GNU grep, GNU tar
- curl
- git
- gh (GitHub CLI)
- upload-rust-binary-action: GitHub Action for building and uploading Rust binary to GitHub Releases.
- parse-changelog: Simple changelog parser, written in Rust. Used in this action.
- install-action: GitHub Action for installing development tools.
- setup-cross-toolchain-action: GitHub Action for setup toolchains for cross compilation and cross testing for Rust.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Footnotes
-
Required one of
token
input option orGITHUB_TOKEN
environment variable. ↩