GitHub Action
Github Release create, update, and upload assets
Github Action to create and update Github Releases, as well as upload assets to them.
See action.yml
steps:
- uses: actions/checkout@v1
- uses: meeDamian/[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.
name | required | description |
---|---|---|
token |
always | Github Access token. Can be accessed by 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 | Place to name the release, the more creative, the better. Defaults to the name of the tag used. more |
body |
no | Place to put a 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 | Marks 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 |
In it's 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 list arguments to actions, so to pass multiple files, pass them as a space-separated string. To do that in an easier to read way, YAML multiline syntax can be used, 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
steps:
- uses: actions/checkout@master
- uses: meeDamian/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: v1.3.6
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/
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", I'm creating permanent git tags for each release in a semver format prefixed with v
, as well as maintain branches with shortened tags.
Ex. 1.4
branch always points to the newest v1.4.x
tag, etc.
In practice:
# For exact tags
steps:
uses: meeDamian/[email protected]
Or
# For newest minor version 1.0
steps:
uses: meeDamian/[email protected]
Note: It's likely branches will be deprecated once Github Actions fixes its limitation.
The scripts and documentation in this project are released under the MIT License