From 53ef6987b3562a24090358abb83a07f2c2bfec26 Mon Sep 17 00:00:00 2001 From: Rob Herley Date: Tue, 23 Jan 2024 11:15:52 -0500 Subject: [PATCH] add additional integration test for merge all behavior --- .github/workflows/test.yml | 49 ++++++++++++++++++++++++++++++++------ README.md | 2 ++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f03af29..ee4acde 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -181,11 +181,45 @@ jobs: - name: Checkout uses: actions/checkout@v4 - # Merge Artifact-A-* from previous jobs - - name: Merge + # Merge all artifacts from previous jobs + - name: Merge all artifacts in run uses: ./merge/ + with: + # our matrix produces artifacts with the same file, this prevents "stomping" on each other, also makes it + # easier to identify each of the merged artifacts + separate-directories: true + - name: 'Download merged artifacts' + uses: actions/download-artifact@v4 with: name: Merged-Artifacts + path: all-merged-artifacts + - name: 'Check merged artifact has directories for each artifact' + run: | + $artifacts = @( + "Artifact-A-ubuntu-latest", + "Artifact-A-macos-latest", + "Artifact-A-windows-latest", + "Artifact-Wildcard-ubuntu-latest", + "Artifact-Wildcard-macos-latest", + "Artifact-Wildcard-windows-latest", + "Multi-Path-Artifact-ubuntu-latest", + "Multi-Path-Artifact-macos-latest", + "Multi-Path-Artifact-windows-latest" + ) + + foreach ($artifact in $artifacts) { + $path = "all-merged-artifacts/$artifact" + if (!(Test-Path $path)) { + Write-Error "$path does not exist." + } + } + shell: pwsh + + # Merge Artifact-A-* from previous jobs + - name: Merge all Artifact-A + uses: ./merge/ + with: + name: Merged-Artifact-As pattern: 'Artifact-A-*' separate-directories: true @@ -193,15 +227,15 @@ jobs: - name: 'Download merged artifacts' uses: actions/download-artifact@v4 with: - name: Merged-Artifacts - path: merged-artifacts + name: Merged-Artifact-As + path: merged-artifact-a - name: 'Verify merged artifacts' run: | $files = @( - "merged-artifacts/Artifact-A-ubuntu-latest/file1.txt", - "merged-artifacts/Artifact-A-macos-latest/file1.txt", - "merged-artifacts/Artifact-A-windows-latest/file1.txt" + "merged-artifact-a/Artifact-A-ubuntu-latest/file1.txt", + "merged-artifact-a/Artifact-A-macos-latest/file1.txt", + "merged-artifact-a/Artifact-A-windows-latest/file1.txt" ) foreach ($file in $files) { @@ -214,3 +248,4 @@ jobs: } } shell: pwsh + diff --git a/README.md b/README.md index a646864..5921b84 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ The release of upload-artifact@v4 and download-artifact@v4 are major changes to For more information, see the [`@actions/artifact`](https://github.com/actions/toolkit/tree/main/packages/artifact) documentation. +There is also a new sub-action, `actions/upload-artifact/merge`. For more info, check out that action's [README](./merge/README.md). + ### Improvements 1. Uploads are significantly faster, upwards of 90% improvement in worst case scenarios.