mirror of
https://github.com/actions/upload-artifact
synced 2024-12-22 14:32:44 +00:00
add compression example
This commit is contained in:
parent
5e7604f84a
commit
ecb21463e9
1 changed files with 41 additions and 0 deletions
41
README.md
41
README.md
|
@ -16,6 +16,7 @@ See also [download-artifact](https://github.com/actions/download-artifact).
|
||||||
- [Upload an Entire Directory](#upload-an-entire-directory)
|
- [Upload an Entire Directory](#upload-an-entire-directory)
|
||||||
- [Upload using a Wildcard Pattern](#upload-using-a-wildcard-pattern)
|
- [Upload using a Wildcard Pattern](#upload-using-a-wildcard-pattern)
|
||||||
- [Upload using Multiple Paths and Exclusions](#upload-using-multiple-paths-and-exclusions)
|
- [Upload using Multiple Paths and Exclusions](#upload-using-multiple-paths-and-exclusions)
|
||||||
|
- [Altering compressions level (speed v. size)](#altering-compressions-level-speed-v-size)
|
||||||
- [Customization if no files are found](#customization-if-no-files-are-found)
|
- [Customization if no files are found](#customization-if-no-files-are-found)
|
||||||
- [(Not) Uploading to the same artifact](#not-uploading-to-the-same-artifact)
|
- [(Not) Uploading to the same artifact](#not-uploading-to-the-same-artifact)
|
||||||
- [Environment Variables and Tilde Expansion](#environment-variables-and-tilde-expansion)
|
- [Environment Variables and Tilde Expansion](#environment-variables-and-tilde-expansion)
|
||||||
|
@ -40,6 +41,7 @@ For more information, see the [`@actions/artifact`](https://github.com/actions/t
|
||||||
1. Uploads are significantly faster, upwards of 90% improvement in worst case scenarios.
|
1. Uploads are significantly faster, upwards of 90% improvement in worst case scenarios.
|
||||||
2. Once uploaded, an Artifact ID is returned and Artifacts are immediately available in the UI and [REST API](https://docs.github.com/en/rest/actions/artifacts). Previously, you would have to wait for the run to be completed before an ID was available or any APIs could be utilized.
|
2. Once uploaded, an Artifact ID is returned and Artifacts are immediately available in the UI and [REST API](https://docs.github.com/en/rest/actions/artifacts). Previously, you would have to wait for the run to be completed before an ID was available or any APIs could be utilized.
|
||||||
3. The contents of an Artifact are uploaded together into an _immutable_ archive. They cannot be altered by subsequent jobs. Both of these factors help reduce the possibility of accidentally corrupting Artifact files.
|
3. The contents of an Artifact are uploaded together into an _immutable_ archive. They cannot be altered by subsequent jobs. Both of these factors help reduce the possibility of accidentally corrupting Artifact files.
|
||||||
|
4. The compression level of an Artifact can be manually tweaked for speed or size reduction.
|
||||||
|
|
||||||
### Breaking Changes
|
### Breaking Changes
|
||||||
|
|
||||||
|
@ -156,6 +158,45 @@ If multiple paths are provided as input, the least common ancestor of all the se
|
||||||
|
|
||||||
Relative and absolute file paths are both allowed. Relative paths are rooted against the current working directory. Paths that begin with a wildcard character should be quoted to avoid being interpreted as YAML aliases.
|
Relative and absolute file paths are both allowed. Relative paths are rooted against the current working directory. Paths that begin with a wildcard character should be quoted to avoid being interpreted as YAML aliases.
|
||||||
|
|
||||||
|
### Altering compressions level (speed v. size)
|
||||||
|
|
||||||
|
If you are uploading large or easily compressable data to your artifact, you may benefit from tweaking the compression level. By default, the compression level is `6`, the same as GNU Gzip.
|
||||||
|
|
||||||
|
The value can range from 0 to 9:
|
||||||
|
- 0: No compression
|
||||||
|
- 1: Best speed
|
||||||
|
- 6: Default compression (same as GNU Gzip)
|
||||||
|
- 9: Best compression
|
||||||
|
|
||||||
|
Higher levels will result in better compression, but will take longer to complete.
|
||||||
|
For large files that are not easily compressed, a value of `0` is recommended for significantly faster uploads.
|
||||||
|
|
||||||
|
For instance, if you are uploading random binary data, you can save a lot of time by opting out of compression completely, since it won't benefit:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Make a 1GB random binary file
|
||||||
|
run: |
|
||||||
|
dd if=/dev/urandom of=my-1gb-file bs=1M count=1000
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: my-artifact
|
||||||
|
path: my-1gb-file
|
||||||
|
compression-level: 0 # no compression
|
||||||
|
```
|
||||||
|
|
||||||
|
But, if you are uploading data that is easily compressed (like plaintext, code, etc) you can save space and cost by having a higher compression level. But this will be heavier on the CPU therefore slower to upload:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Make a file with a lot of repeated text
|
||||||
|
run: |
|
||||||
|
for i in {1..100000}; do echo -n 'foobar' >> foobar.txt; done
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: my-artifact
|
||||||
|
path: foobar.txt
|
||||||
|
compression-level: 9 # maximum compression
|
||||||
|
```
|
||||||
|
|
||||||
### Customization if no files are found
|
### Customization if no files are found
|
||||||
|
|
||||||
If a path (or paths), result in no files being found for the artifact, the action will succeed but print out a warning. In certain scenarios it may be desirable to fail the action or suppress the warning. The `if-no-files-found` option allows you to customize the behavior of the action if no files are found:
|
If a path (or paths), result in no files being found for the artifact, the action will succeed but print out a warning. In certain scenarios it may be desirable to fail the action or suppress the warning. The `if-no-files-found` option allows you to customize the behavior of the action if no files are found:
|
||||||
|
|
Loading…
Reference in a new issue