mirror of
				https://github.com/actions/upload-artifact.git
				synced 2025-10-23 08:56:38 +08:00 
			
		
		
		
	Merge branch 'main' into robherley/migration-docs-typo
This commit is contained in:
		| @@ -3,6 +3,7 @@ | ||||
| - [Migration](#migration) | ||||
|   - [Multiple uploads to the same named Artifact](#multiple-uploads-to-the-same-named-artifact) | ||||
|   - [Overwriting an Artifact](#overwriting-an-artifact) | ||||
|   - [Merging multiple artifacts](#merging-multiple-artifacts) | ||||
|  | ||||
| Several behavioral differences exist between Artifact actions `v3` and below vs `v4`. This document outlines common scenarios in `v3`, and how they would be handled in `v4`. | ||||
|  | ||||
| @@ -144,3 +145,64 @@ jobs: | ||||
| ``` | ||||
|  | ||||
| Note that this will create an _entirely_ new Artifact, with a different ID from the previous. | ||||
|  | ||||
| ## Merging multiple artifacts | ||||
|  | ||||
| In `v3`, multiple uploads from multiple jobs could be done to the same Artifact. This would result in a single archive, which could be useful for sending to upstream systems outside of Actions via API or UI downloads. | ||||
|  | ||||
| ```yaml | ||||
| jobs: | ||||
|   upload: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         runs-on: [ubuntu-latest, macos-latest, windows-latest] | ||||
|     runs-on: ${{ matrix.runs-on }} | ||||
|     steps: | ||||
|       - name: Create a File | ||||
|         run: echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt | ||||
|       - name: Upload Artifact | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: all-my-files # NOTE: same artifact name | ||||
|           path: file-${{ matrix.runs-on }}.txt | ||||
| ``` | ||||
|  | ||||
| The single `all-my-files` artifact would contain the following: | ||||
|  | ||||
| ``` | ||||
| . | ||||
|   ∟ file-ubuntu-latest.txt | ||||
|   ∟ file-macos-latest.txt | ||||
|   ∟ file-windows-latest.txt | ||||
| ``` | ||||
|  | ||||
| To achieve the same in `v4` you can change it like so: | ||||
|  | ||||
| ```diff | ||||
| jobs: | ||||
|   upload: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         runs-on: [ubuntu-latest, macos-latest, windows-latest] | ||||
|     runs-on: ${{ matrix.runs-on }} | ||||
|     steps: | ||||
|       - name: Create a File | ||||
|         run: echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt | ||||
|       - name: Upload Artifact | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
| -         name: all-my-files | ||||
| +         name: my-artifact-${{ matrix.runs-on }} | ||||
|           path: file-${{ matrix.runs-on }}.txt | ||||
| + merge: | ||||
| +   runs-on: ubuntu-latest | ||||
| +   needs: upload | ||||
| +   steps: | ||||
| +     - name: Merge Artifacts | ||||
| +       uses: actions/upload-artifact/merge@v4 | ||||
| +       with: | ||||
| +         name: all-my-files | ||||
| +         pattern: my-artifact-* | ||||
| ``` | ||||
|  | ||||
| Note that this will download all artifacts to a temporary directory and reupload them as a single artifact. For more information on inputs and other use cases for `actions/upload-artifact/merge@v4`, see [the action documentation](../merge/README.md). | ||||
|   | ||||
		Reference in New Issue
	
	Block a user