Upload Release Asset(s)
ActionsTags
(1)Please note: This is just to fix the original action for my specific use cases. Feel free to use it as you wish or open an issue if you want/need additional behaviors.
If you want to make a pr be careful that it's not going to the original repo.
This is meant to act as almost a direct replacement for the original that can take multiple files.
If you are having any troubles, you can enable additional logs and info by setting ACTIONS_STEP_DEBUG
to true
in your secretes
This GitHub Action (written in JavaScript) wraps the GitHub Release API, specifically the Upload a Release Asset endpoint, to allow you to leverage GitHub Actions to upload release assets.
Create a workflow .yml
file in your repositories .github/workflows
directory. An example workflow is available below. For more information, reference the GitHub Help Documentation for Creating a workflow file. You also will need to have a release to upload your asset to, which could be created programmatically by @actions/create-release
as show in the example workflow.
For more information on these inputs, see the API Documentation
upload_url
: The URL for uploading assets to the release, which could come from another GitHub Action, for example the@actions/create-release
GitHub Actionasset_path
can now take wildcards as well as an array of paths. Uses @actions/glob so the same as actions/upload-artifactasset_name
Will be ignored if there are multiple filesasset_content_type
is now optional
For more information on these outputs, see the API Documentation for an example of what these outputs look like
browser_download_url
: An array of URLs users can navigate to in order to download the release assets. i.e.https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip
On every push
to a tag matching the pattern v*
, create a release and upload a release asset. This Workflow example assumes you have the @actions/create-release
Action in a previous step:
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
name: Upload Release Asset
jobs:
build:
name: Upload Release Asset
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build project # This would actually build your project, using zip for an example artifact
run: |
zip --junk-paths my-artifact README.md
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset
uses: sekwah41/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./my-artifact.zip
asset_name: my-artifact.zip
asset_content_type: application/zip
This will upload a release artifact to an existing release, outputting the browser_download_url
for the asset which could be handled by a third party service, or by GitHub Actions for additional uses. For more information, see the GitHub Documentation for the upload a release asset endpoint.
We would love you to contribute to sekwah41/upload-release-assets
, pull requests are welcome! Please see the CONTRIBUTING.md for more information.
The scripts and documentation in this project are released under the MIT License
Upload Release Asset(s) is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.