A GitHub Action for a GitHub Release creation with Assets and Changelog on new Git Tag in the repository.
- Parse Tag to match Semantic Versioning
- Upload build artifacts (assets) to the release
- Publish release with changelog
- Keep a Changelog Compliant
- Common Changelog Compliant
- Supported runners:
- Linux AMD64
- Linux ARM64
- Windows
- Filename pattern matching
- Supports GitHub Enterprise
- Supports standard
v
prefix out of the box - Allows custom SemVer prefixes
- Update a single pre-release with changes from Unreleased scope
- Retry assets upload on network interrupts
-
Add changes to
CHANGELOG.md
. For example:## [3.4.0] - 2020-07-10 ### Added - Glob pattern support - Unit Tests - Log version ### Fixed - Exception on margins larger than context of changelog - Nil pointer exception in 'release' package ### Changed - Refactor JavaScript wrapper ## [3.3.0] - 2020-06-27 ### Added - Wrapper script: allow execution on Windows runners ### Changed - Action execution through Git: from Docker to NodeJS [3.4.0]: https://github.com/anton-yurchenko/git-release/compare/v3.3.0...v3.4.0 [3.3.0]: https://github.com/anton-yurchenko/git-release/releases/tag/v3.3.0
-
Tag a commit with Version (according to semver.org)
-
Push and watch Git-Release publishing a Release on GitHub 😉
-
Change the workflow to be triggered on new Tag:
- For example
'*'
or a more specific like'v*'
:
on: push: tags: - "v[0-9]+.[0-9]+.[0-9]+"
- For example
-
Add Release step to your workflow:
- name: Release uses: docker://antonyurchenko/git-release:v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: build/*.zip
-
Configure Release step:
- Specify release assets as action
arguments
(divided by one of:new line
,space
,comma
,pipe
) - Fine tune action configuration using environmental variables:
Environmental Variable Allowed Values Default Value Description DRAFT_RELEASE
true
/false
false
Publish a draft release PRE_RELEASE
true
/false
false
Mark release non-production ready CHANGELOG_FILE
*
CHANGELOG.md
Changelog filename (set none
to silence a warning message if file does not exist)ALLOW_EMPTY_CHANGELOG
true
/false
false
Allow publishing a release without changelog TAG_PREFIX_REGEX
*
[v]?
Version tag prefix regex, for example [a-z-]*
in order to parseprerelease-1.1.0
RELEASE_NAME
*
"" Complete release title (should not be combined with RELEASE_NAME_PREFIX
andRELEASE_NAME_SUFFIX
)RELEASE_NAME_PREFIX
*
"" Release title prefix RELEASE_NAME_SUFFIX
*
"" Release title suffix UNRELEASED
update
/delete
"" Set to update
in order to allow deletion and recreation of the same release and its tag (intended to be used forunreleased
/latest
release only). Set todelete
in order to delete a previously publishedunreleased
/latest
release.UNRELEASED_TAG
latest
*
Use a custom tag for unreleased
/latest
release (tag will be created/deleted automatically)Configuration is provided as environmental variables (strings), so do not forget to enclose boolean values with quotes
- Specify release assets as action
ℹ️ Windows Runners
Execute git-release through JavaScrip Wrapper on Windows Runners.
- name: Release
uses: anton-yurchenko/git-release@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: |
build\\darwin-amd64.zip
build\\linux-amd64.zip
build\\windows-amd64.zip
- This action has multiple tags:
latest / v1 / v1.2 / v1.2.3
. You may lock to a certain version instead of using latest.
(Recommended to lock against a major version, for examplev4
) - Instead of using a pre-built Docker image, you may execute the action through JavaScript wrapper by changing
docker://antonyurchenko/git-release:latest
toanton-yurchenko/git-release@main
git-release
operates assets with pattern matching, this means that it is unable to validate whether an asset exists- Docker image is published both to Docker Hub and GitHub Packages. If you don't want to rely on Docker Hub but still want to use the dockerized action, you may switch from
uses: docker://antonyurchenko/git-release:latest
touses: docker://ghcr.io/anton-yurchenko/git-release:latest
- Slashes (
/
) in asset filenames will be replaced with dashes (-
) git-release
may crash when executed against a not supported changelog file format. Make sure your changelog file is compliant to one of the supported formats.
MIT © 2019-present Anton Yurchenko