The sane way of creating new and updating existing Github Releases with assets.
See action.yml
steps:
- uses: actions/checkout@v2
- 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.
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 |
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: meeDamian/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ env.RELEASE_TAG }}
name: ${{ env.RELEASE_NAME }}
...
To learn more about notation used above see this.
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
steps:
- uses: actions/checkout@v2
- uses: meeDamian/[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/
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: meeDamian/[email protected]
Or
# For newest minor version 2.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