Giter VIP home page Giter VIP logo

actions-upload-release-asset's Introduction

GitHub Action - Releases API

test

This GitHub Action uploads release assets using Upload a release asset. actions/upload-release-asset is great, but it is no longer maintained. So, I create this action.

FEATURE

The action is compatible with actions/upload-release-asset, however it has some additional features.

  • You can upload multiple assets in one step by using glob patterns
  • The actions guesses the content-type from the extensions

SYNOPSIS

Upload assets when a release has been created

You can upload assets when a release has been created.

on:
  release:
    types:
      - created

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # steps for building assets
      - run: echo "REPLACE ME!" > assets.txt

      - uses: shogo82148/actions-upload-release-asset@v1
        with:
          upload_url: ${{ github.event.release.upload_url }}
          asset_path: assets.txt

Upload assets when a tag has been created

If you want to create a release in your workflow, you can use shogo82148/actions-create-release GitHub Action.

on:
  push:
    tags:
      - "v*"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # steps for building assets
      - run: echo "REPLACE ME!" > assets.txt

      - name: Create a Release
        id: create_release
        uses: shogo82148/actions-create-release@v1

      # A release created by shogo82148/actions-create-release is alway draft here.
      # So users may not see an empty release.

      - name: Upload Assets
        uses: shogo82148/actions-upload-release-asset@v1
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: assets.txt

      # shogo82148/actions-create-release publishes the release in the end of the job.
      # Users now can download `assets.txt` from the release page.

Inputs

github_token

The API token for GitHub. ${{ github.token }} is used by default.

upload_url

The URL for uploading assets to the release.

asset_path

The path to the asset you want to upload. You can use glob patterns here.

asset_name

The name of the asset you want to upload. The file name of asset_path is used by default.

asset_content_type

The content-type of the asset you want to upload. See the supported Media Types here: https://www.iana.org/assignments/media-types/media-types.xhtml for more information.

By default, the actions guesses the content-type using the mime-types package.

overwrite

If an asset with the same name already exists, overwrite it (Default: false).

Related works

actions-upload-release-asset's People

Contributors

cssho avatar dependabot-preview[bot] avatar dependabot[bot] avatar shogo82148 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

actions-upload-release-asset's Issues

Upload fails: ECONNRESET

I have been trying to find a repository which can upload release assets to GitHub Release pages.

For almost all of the actions, I get the error of connection reset or socket timeout while uploading the package. I landed on actions/upload-release-asset#69 seeing others are facing the issue as well.

So far, all actions I used used the github's library directly. However this repository makes connection to REST API which is unique. But I am still facing the issue.

Let me explain what I am trying to do. We build our tool on different Ubuntu and Debian releases and create Debian packages out of them. All the builds are done on Docker containers to emulate different build OS. At the end, we create a tar with following naming scheme (which is unique for each OS).
FOSSology-<version>-<os_name>-<os_release>.tar.gz

Now, while trying to upload this tar, we are facing issues. In the latest run, I got the following error:

/usr/bin/docker exec  0791872080b91fc8a4e626070c284da003270f97f042928622c7c5a6400c8749 sh -c "cat /etc/*release | grep ^ID"
deleting asset FOSSology-4.0.9-ubuntu-focal.tar.gz before uploading
uploading /__w/fossology/fossology/FOSSology-4.0.9-ubuntu-focal.tar.gz as FOSSology-4.0.9-ubuntu-focal.tar.gz: size: 20290645
Error: Error: write ECONNRESET

Here is the link to the build: https://github.com/GMishx/fossology/runs/6061877258?check_suite_focus=true#step:12:16

Other Actions I tried, failed with similar errors:

At random, some uploads succeeds.

Set asset label value by default

I'm not even sure if that is right tbh however I need to be able to define a predictable download URL as I am uploading chart .tgz files and using GitHub as a Helm feed. A release asset upload URL looks like this:

"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",

I need the label to be a predictable value as it needs to be set in my Helm index file for my Helm feed. Could this get set by default as the file name without the file extension? I'd rather not have to subsequently go and query the API to find the uploaded assets ID

As it stands you get:

"/${owner}/${repo}/releases/download/${random_int_id}/${asset_file_name}"

If we don't want to set it by default then having a new input to set it would be good:

with:
  upload_url: ${{ github.event.release.upload_url }}
  asset_path: assets.txt
  set_asset_label: true

How NOT to upload source code

Is it possibile to have an option where I can select not to upload source code (zip and tar.gz) ?
Or maybe there is already an easier way ?

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.