Giter Site home page Giter Site logo

github-release's Introduction

iamkubi/github-release

gh_last_release_svg

The sane way of creating new and updating existing Github Releases with assets.

Usage

See action.yml

Minimal

steps:
- uses: actions/checkout@v2

- uses: iamkubi/[email protected]
  with:
    token: ${{ secrets.GITHUB_TOKEN }}

token is the only always required parameter to be passed to this action. Everything else can use sane defaults in some circumstances. See arguments to learn more.

Arguments

All inputs are available as a normal Action input (set as keys of with: map):

name required description
token always Github Access token. Can be accessed using ${{ secrets.GITHUB_TOKEN }} in the workflow file.
tag sometimes If triggered by git tag push, tag is picked up automatically. Otherwise tag: has to be set.
commitish no Commit hash this release should point to. Unnecessary, if tag is a git tag. Otherwise, current master is used. more
name no Name the release, the more creative, the better. Defaults to the name of the tag used. more
body no Longer description of the release, ex changelog, or info about contributors. Defaults to the commit message of the reference commit. more
draft no Set to true to create a release, but not publish it. false by default. more
prerelease no Mark this release as a pre-release. false by default. more
files no A space-separated list of files to be uploaded. When left empty, no files are uploaded. More on files below
gzip no Set whether to gzip uploaded assets, or not. Available options are: true, false, and folders which uploads files unchanged, but compresses directories/folders. Defaults to true. Note: it errors if set to false, and files: argument contains path to a directory.
allow_override no Allow override of release, if one with the same tag already exists. Defaults to false
generate_release_notes no Whether to automatically generate the name and body for this release. If name is specified, the specified name will be used; otherwise, a name will be automatically generated. If body is specified, the body will be pre-pended to the automatically generated notes. Defaults to false

Using ENV vars

In a step before this action, run ex:

steps:
    ...
    - name: Set enviroment for github-release
      run: |
        echo ::set-env name=RELEASE_TAG::"v1.0.0"
        echo ::set-env name=RELEASE_NAME::"$GITHUB_WORKFLOW"

    - uses: iamkubi/[email protected]
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        tag: ${{ env.RELEASE_TAG }}
        name: ${{ env.RELEASE_NAME }}
    ...

To learn more about notation used above see this.

Files syntax

In its simplest form it takes a single file/folder to be compressed & uploaded:

with:
  
  files: release/

Each uploaded element can also be named by prefixing the path to it with: <name>:, example:

with:
  
  files: release-v1.0.0:release/

As of Aug 2019, Github Actions doesn't support YAML-list arguments to actions, so multiple files need to be passed as a space-separated string. YAML multiline syntax can be used to increase readability by having each file on a separate line, example:

with:
  
  files: >
    release-v1.0.0-linux:release/linux/
    release-v1.0.0-mac:release/darwin/
    release-v1.0.0-windows:release/not-supported-notice
    checksums.txt      

Advanced example

steps:
- uses: actions/checkout@v2

- uses: iamkubi/[email protected]
  with:
    token: ${{ secrets.GITHUB_TOKEN }}
    tag: ${{ env.MY_CUSTOM_TAG }}
    name: My Creative Name
    body: >
      This release actually changes the fabric of the reality, so be careful 
      while applying, as error in database migration, can irrecoverably wipe 
      some laws of physics.  
    gzip: folders
    files: >
      Dockerfile
      action.yml
     .github/
      license:LICENSE
      work-flows:.github/

Versioning

As of Aug 2019, Github Actions doesn't natively understand shortened tags in uses: directive.

To go around that and not do what git-tag-manual calls "The insane thing", a permanent git tag, following v-prefixed, semver format is created, as well as git branches following latest minor versions. See the process here.

Ex. 1.4 branch always points to the newest v1.4.x tag, etc.

In practice:

# For exact version
steps:
  uses: iamkubi/[email protected]

Or

# For newest minor version 2.0
steps:
  uses: iamkubi/[email protected]

Note: It's likely branches will be deprecated once Github Actions fixes its limitation.

License

The scripts and documentation in this project are released under the MIT License

github-release's People

Contributors

iamkubi avatar meedamian avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

asadshoaib52

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.