anton-yurchenko / git-release

Publish a GitHub Release :package: with Assets :file_folder: and Changelog :bookmark:
https://github.com/marketplace/actions/git-release
MIT License
168 stars 15 forks source link
action actions cd changelog ci commonchangelog github github-actions github-release github-releases keepachangelog release semver version

git-release

Release Code Coverage Go Report Card Release Docker Pulls License

A GitHub Action for a GitHub Release creation with Assets and Changelog on new Git Tag in the repository.

PIC

Features

Manual

  1. 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
    
  2. Tag a commit with Version (according to semver.org)

  3. Push and watch Git-Release publishing a Release on GitHub :wink:

    PIC

Configuration

  1. 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]+"
  2. Add Release step to your workflow:

        - name: Release
          uses: docker://antonyurchenko/git-release:v5
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          with:
            args: build/*.zip
  3. 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 parse prerelease-1.1.0
    RELEASE_NAME * "" Complete release title (should not be combined with RELEASE_NAME_PREFIX and RELEASE_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 for unreleased/latest release only). Set to delete in order to delete a previously published unreleased/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

:information_source: Windows Runners Execute **git-release** through JavaScrip Wrapper on Windows Runners. ```yaml - 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 ```

:information_source: Configuration Examples

Remarks

License

MIT © 2019-present Anton Yurchenko