Skip to content

Repository files navigation

GitHub Action - Releases API

This GitHub Action (written in JavaScript) wraps the Create a Release endpoint and Auto Increment Tag Version feature. Which allows to create tag automatically when pushed to the release branch. This is also an alternative to Samson Release functionality.

GitHub Actions status

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

ParameterDescriptionRequiredDefault
tag_nameThe name of the tag for this release.NAuto Incremented
release_nameThe name of the release.NTAG_NAME
bodyText describing the contents of the releaseNN/A
drafttrue to create a draft (unpublished) release, false to create a published one.Nfalse
prereleasetrue to identify the release as a prerelease. false to identify the release as a full release.Nfalse
prerelease_suffixThe suffix added to a prerelease tag, if none already exists.Nbeta
auto_increment_typeUsed for auto-incrementing the tag version. One of (major, minor, patch, prerelease, premajor).Npatch
tag_schemaUsed for computing the tag schema. One of (continuous, semantic).Ncontinuous

Outputs

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

ParameterDescription
idThe release ID
html_urlThe URL users can navigate to in order to view the release. i.e. https://github.com/octocat/Hello-World/releases/v1.0.0
upload_urlThe 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
previous_tagThe most recent tag found during auto incrementing the tag version.
current_tagThe tag used to create a Release.

Example workflow - Create a release

Auto Increment - Patch type - Push to master

On every push to a master branch will create tag incrementally.

on:
push:
branches:
- mastername: Create Releasejobs:
build:
name: Create Releaseruns-on: ['self-hosted']steps:
- name: Create Releaseid: create_releaseuses: zendesk/action-create-release@v1env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Sample Output:

previous_tag: v5.0.3
current_tag: v5.0.4
id: 123
upload_url: https://uploads.github.com/repos/zendesk/Hello-World/releases/1/assets
html_url: https://github.com/octocat/Hello-World/releases/v1.0.0

Auto Increment types and outputs

TypePrevious TagCurrent Tag
majorv5.0.1v6.0.0
minorv5.0.1v5.1.1
patchv5.0.1v5.0.2
prereleasev5.0.1v5.0.2-beta.0
premajorv5.0.1v6.0.1-beta.0

Tag as parameter

On every push to a tag matching the pattern v*, create a release:

on:
push:
# Sequence of patterns matched against refs/tagstags:
- 'v*'# Push events to matching v*, i.e. v1.0, v20.15.10name: Create Releasejobs:
build:
name: Create Releaseruns-on: ['self-hosted']steps:
- name: Create Releaseid: create_releaseuses: zendesk/action-create-release@v1env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own tokenwith:
tag_name: ${{ github.ref }}release_name: Release ${{ github.ref }}body: | Changes in this Release - First Change - Second Changedraft: falseprerelease: false

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 @zendesk/action-create-release, 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 to create releases

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages