actions / actions/toolkit

Streamline Artifact Upload

Open
#1,389 0 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
5.9k
Forks
1.8k
PR merge metrics
No merged PRs in 30d

Description

Right now the artifact upload is kind of simple. A container is created and a set of files are added to it.

This has the following downsides:

  • If the build artifact is already an archive like a tar archive or even an rpm or deb package it will be packaged again into a zip file. For outside testing / using the container archive has to be unpacked and then the inner archive has to be unpacked as well. Install packages have to be unzipped before they can be used.
  • If many small files are added to the artifact (e.g. to avoid two nested archives) an http request is done for each file. Even though some requests are parallelized the extra time and compute power wasted is significant, depending on the file size.

Possible solutions:

  1. Allow a single artifact upload mode, that is not wrapped into an extra archive. It would be wise to limit the file types that are allowed in this mode to avoid abuse.
  2. Upload multiple files in one http request to the artifact container. Possibly using multi part mime encoding or a simple container format like tar. The files may be reasonably chunked to allow outputting progress details.

Both options would save energy for Microsoft / Github, reduce the cycle time for GHA and time for the users.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points. Start by locating the artifact upload implementation in actions/toolkit and clarify whether the intended direction is unwrapped single-artifact uploads, batched multi-file requests, or both; done requires an agreed design that addresses redundant packaging and per-file request overhead.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, typescript
Domain
ci-cd, devops
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.