From 0d500afe8da9a64341d309e6a2561269655e094e Mon Sep 17 00:00:00 2001 From: Aiden Grossman Date: Wed, 3 Dec 2025 02:47:18 +0000 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?= =?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.7 [skip ci] --- .github/workflows/issue-write-test.yaml | 25 ++++++++ .github/workflows/issue-write.yml | 1 + .../test-unprivileged-download-artifact.yml | 26 +++++--- .../unprivileged-download-artifact/action.yml | 59 +++++++++++++------ 4 files changed, 84 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/issue-write-test.yaml diff --git a/.github/workflows/issue-write-test.yaml b/.github/workflows/issue-write-test.yaml new file mode 100644 index 0000000000000..9497e719e35b1 --- /dev/null +++ b/.github/workflows/issue-write-test.yaml @@ -0,0 +1,25 @@ +name: Test Issue Write Workflow + +permissions: + contents: read + +on: + pull_request: + paths: + - '.github/workflows/issue-write-test.yaml' + +jobs: + test-issue-write: + name: "Test Issue Write" + runs-on: ubuntu-24.04 + if: github.repository == 'llvm/llvm-project' + steps: + - name: Write Comment + run: | + echo '[{"body": "This is a comment for testing the issue write workflow"}]' > comments + - name: Upload Comment + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + with: + name: workflow-args + path: | + comments diff --git a/.github/workflows/issue-write.yml b/.github/workflows/issue-write.yml index ece6081ce9ba6..ac75dffd8b3b8 100644 --- a/.github/workflows/issue-write.yml +++ b/.github/workflows/issue-write.yml @@ -8,6 +8,7 @@ on: - "PR Request Release Note" - "Code lint" - "CI Checks" + - "Test Issue Write" types: - completed diff --git a/.github/workflows/test-unprivileged-download-artifact.yml b/.github/workflows/test-unprivileged-download-artifact.yml index 39ac3d57a3879..09f65f9a34061 100644 --- a/.github/workflows/test-unprivileged-download-artifact.yml +++ b/.github/workflows/test-unprivileged-download-artifact.yml @@ -21,15 +21,23 @@ jobs: if: github.repository_owner == 'llvm' runs-on: ubuntu-24.04 steps: - - name: Create Test File + - name: Create Test Files run: | - echo "test" > comment - - name: Upload Test File + echo "foo" > comment1 + echo "bar" > comment2 + - name: Upload Test File 1 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: - name: workflow-args + name: artifact-name-1 path: | - comment + comment1 + - name: Upload Test File 2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + with: + name: artifact-name-2 + path: | + comment2 + test-download: name: Test Unprivileged Download Artifact @@ -47,8 +55,10 @@ jobs: id: download-artifact with: run-id: ${{ github.run_id }} - artifact-name: workflow-args + artifact-name: artifact-name- - name: Assert That Contents are the Same run: | - cat comment - [[ "$(cat comment)" == "test" ]] + cat comment1 + [[ "$(cat comment1)" == "foo" ]] + cat comment2 + [[ "$(cat comment2)" == "bar" ]] diff --git a/.github/workflows/unprivileged-download-artifact/action.yml b/.github/workflows/unprivileged-download-artifact/action.yml index 72815b26bcf41..173b8ca93252f 100644 --- a/.github/workflows/unprivileged-download-artifact/action.yml +++ b/.github/workflows/unprivileged-download-artifact/action.yml @@ -19,9 +19,9 @@ outputs: The filename of the downloaded artifact or the empty string if the artifact was not found. value: ${{ steps.download-artifact.outputs.filename }} - artifact-id: + artifact-ids: description: "The id of the artifact being downloaded." - value: ${{ steps.artifact-url.outputs.id }} + value: ${{ steps.artifact-url.outputs.ids }} runs: @@ -36,46 +36,67 @@ runs: response = await github.rest.actions.listArtifactsForRepo({ owner: context.repo.owner, repo: context.repo.repo, - name: "${{ inputs.artifact-name }}" }) } else { response = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: "${{ inputs.run-id }}", - name: "${{ inputs.artifact-name }}" }) } console.log(response) + artifacts_to_download = [] for (artifact of response.data.artifacts) { + if (artifact.name.startsWith("${{ inputs.artifact-name }}")) { + artifacts_to_download.push(artifact) + } + } + + for (artifact of artifacts_to_download) { console.log(artifact); } - if (response.data.artifacts.length == 0) { - console.log("Could not find artifact ${{ inputs.artifact-name }} for workflow run ${{ inputs.run-id }}") + if (artifacts_to_download.length == 0) { + console.log("Could not find artifacts starting with name ${{ inputs.artifact-name }} for workflow run ${{ inputs.run-id }}") return; } - const url_response = await github.rest.actions.downloadArtifact({ - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: response.data.artifacts[0].id, - archive_format: "zip" - }) + artifact_ids = [] + artifact_urls = [] + artifact_names = [] + for (artifact_to_download of artifacts_to_download) { + const url_response = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: artifact_to_download.id, + archive_format: "zip" + }) + + artifact_ids.push(artifact_to_download.id) + artifact_urls.push('"' + url_response.url + '"') + artifact_names.push('"' + artifact_to_download.name + '"') + } - core.setOutput("url", url_response.url); - core.setOutput("id", response.data.artifacts[0].id); + core.setOutput("urls", artifact_urls.join(" ")); + core.setOutput("ids", artifact_ids.join(" ")); + core.setOutput("names", artifact_names.join(" ")); - shell: bash - if: steps.artifact-url.outputs.url != '' + if: steps.artifact-url.outputs.urls != '' id: download-artifact run: | - curl -L -o ${{ inputs.artifact-name }}.zip "${{ steps.artifact-url.outputs.url }}" - echo "filename=${{ inputs.artifact-name }}.zip" >> $GITHUB_OUTPUT + artifact_urls=(${{ steps.artifact-url.outputs.urls }}) + artifact_names=(${{ steps.artifact-url.outputs.names }}) + for i in "${!artifact_urls[@]}"; do + curl -L -o "${artifact_names[$i]}.zip" "${artifact_urls[$i]}" + done - shell: bash - if: steps.download-artifact.outputs.filename != '' + if: steps.artifact-url.outputs.names != '' run: | - unzip ${{ steps.download-artifact.outputs.filename }} + artifact_names=(${{ steps.artifact-url.outputs.names }}) + for name in "${artifact_names[@]}"; do + unzip "${name}.zip" + done