/action-create-release

Github action to create releases

Primary LanguageJavaScriptMIT LicenseMIT

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

Parameter Description Required Default
tag_name The name of the tag for this release. N Auto Incremented
release_name The name of the release. N TAG_NAME
body Text describing the contents of the release N N/A
draft true to create a draft (unpublished) release, false to create a published one. N false
prerelease true to identify the release as a prerelease. false to identify the release as a full release. N false
prerelease_suffix The suffix added to a prerelease tag, if none already exists. N beta
auto_increment_type Used for auto-incrementing the tag version. One of (major, minor, patch, prerelease, premajor). N patch
tag_schema Used for computing the tag schema. One of (continuous, semantic). N continuous

Outputs

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

Parameter Description
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
previous_tag The most recent tag found during auto incrementing the tag version.
current_tag The 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:
      - master

name: Create Release

jobs:
  build:
    name: Create Release
    runs-on: ['self-hosted']
    steps:
      - name: Create Release
        id: create_release
        uses: zendesk/action-create-release@v1
        env:
          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

Type Previous Tag Current Tag
major v5.0.1 v6.0.0
minor v5.0.1 v5.1.1
patch v5.0.1 v5.0.2
prerelease v5.0.1 v5.0.2-beta.0
premajor v5.0.1 v6.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/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

name: Create Release

jobs:
  build:
    name: Create Release
    runs-on: ['self-hosted']
    steps:
      - name: Create Release
        id: create_release
        uses: zendesk/action-create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          body: |
            Changes in this Release
            - First Change
            - Second Change
          draft: false
          prerelease: 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