Skip to content

xresloader/upload-to-github-release

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Upload To Github Release

Github Action for deploy files to github release.

Marketplace: https://github.com/marketplace/actions/upload-to-github-release

GitHub Actions status GitHub release (latest by date) GitHub

Dependency: @actions/core Dependency: @actions/github Dependency: @actions/globby Dependency: mime

Dev dependency: typescript Dev dependency: @types/jest Dev dependency: @types/node Dev dependency: @vercel/ncc Dev dependency: jest Dev dependency: jest-circus Dev dependency: ts-jest

npm GitHub code size in bytes GitHub repo size GitHub forks GitHub stars

Example usage

uses: xresloader/upload-to-github-release@v1
env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
  file: "*.md"
  tags: true
  draft: true

You can find more samples on https://github.com/xresloader/upload-to-github-release-test/blob/master/.github/workflows/ .

Environments

GITHUB_TOKEN

Optional The github token. You can set it to "${{ secrets.GITHUB_TOKEN }}" to use default token.

See https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line for details.

Inputs

file

Required The files or file patterns to upload. You can upload multiple files by split them by semicolon. You can use the glob pattern to find the files.

delete_file

Optional The files or file patterns to delete before uploading new files. You can delete multiple files by split them by semicolon. You can use the glob pattern to find the files.

overwrite

Optional If you need to overwrite existing files, add overwrite: true.

Default : false

draft

Optional The resultant deployment is a draft Release that only repository collaborators can see. This gives you an opportunity to examine and edit the draft release.

This is a tristate option. It can be either true or false, which will set the release's status accordingly. When uploading to an existing release, you can also leave this option unset, which will perserve the release's existing status.

Default : true for new release, unset for existing release

We will only try to query the first 100 releases to find the draft release with the same name, because we can not get a draft release by tag name util it's published.

prerelease

Optional The resultant deployment is a Prerelease that only repository collaborators can see. This gives you an opportunity to examine and edit the prerelease.

This is a tristate option. It can be either true or false, which will set the release's status accordingly. When uploading to an existing release, you can also leave this option unset, which will perserve the release's existing status.

Default : false for new release, unset for existing release

tags

Optional With tags: true, your Releases deployment will trigger if and only if the build is a tagged build.

Default : false

branches

Optional Only work on these branches, set to nothing to accept all branches.

Default : []

tag_name

Optional Set custom tag name.

Default : ""

update_latest_release

Optional With update_latest_release: true, this action will try to update latest release first.

Default : false

verbose

Optional Print the verbose logs to debug.

Default : false

release_id

Optional Set release id to update.If release_id is set, this step will fail if we can not find it.

Default : 0

default_release_name

Optional Set release name when create a new release.

Default : Git tag name

default_release_body

Optional Set release body when create a new release.Not needed if using default_release_body_path.

Default : ""

default_release_body_path

Optional Set the file to read release body when create a new release.Not needed if using default_release_body.

Default : ""

update_release_body

Optional Always update release body when it's not empty.

Default : ""

update_release_body_path

Optional Always update release body from file.Not needed if using update_release_body.

Default : ""

update_release_body_append

Optional Append content instead of replace release body when updating.

Default : "false"

token

Optional Authorized secret GitHub Personal Access Token. Defaults to github.token.

Default : ${{ github.token }}

target_owner

Optional Set the owner of target repository.

Default : current user/origanization

target_repo

Optional Set target repository.

Default : current repository

Outputs

release_id

The release id.

release_name

The release name.

release_url

The release url.

release_tag_name

The release tag name.

release_commitish

The release commitish.

For Developer

We can use npm or yarn to build this action.

npm i -g yarn
yarn install # or pnpm install
yarn run build # or pnpm run build

# commit
git add lib/* src/*
git commit -m "COMMIT MESSAGE"
# test with bash
env NODE_OPTIONS="$NODE_OPTIONS --experimental-vm-modules" yarn run test
env NODE_OPTIONS="$NODE_OPTIONS --experimental-vm-modules" pnpm run test
# test with powershell
$ENV:NODE_OPTIONS="$ENV:NODE_OPTIONS --experimental-vm-modules"

yarn run test # or pnpm run test

Reference

title link
GitHub Actions https://github.com/features/actions
Creating a javascript action https://help.github.com/en/articles/creating-a-javascript-action#testing-out-your-action-in-a-workflow
Events that trigger workflows - GitHub Help https://help.github.com/en/articles/events-that-trigger-workflows
The GitHub ToolKit for developing GitHub Actions https://github.com/actions/toolkit
GitHub GraphQL API v4 https://developer.github.com/v4/
GitHub Rest API v3 for Release https://developer.github.com/v3/repos/releases/
GitHub GraphQL API client for browsers and Node https://github.com/octokit/graphql.js
GitHub REST API client for JavaScript https://octokit.github.io/rest.js/