Files
MapLibreParticleLab/.github/actions/download-workflow-run-artifact/action.yml
2026-07-10 00:23:02 +00:00

56 lines
2.1 KiB
YAML

name: 'Download workflow_run artifact'
description: 'Downloads and unzips artifact from workflow that triggered workflow_run'
inputs:
artifact-name:
description: 'Name of artifact'
required: true
expect-files:
description: 'Check for existence of expected files'
required: false
runs:
using: "composite"
steps:
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run
- name: Download ${{ inputs.artifact-name }} artifact
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "${{ inputs.artifact-name }}"
})[0];
if (!matchArtifact) {
console.log("Could not find artifact '${{ inputs.artifact-name }}'");
return;
}
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/${{ inputs.artifact-name }}.zip`, Buffer.from(download.data));
- name: "Check .zip file existence"
id: zip_exists
uses: andstor/file-existence-action@558493d6c74bf472d87c84eab196434afc2fa029 # v3.1.0
with:
files: ${{ inputs.artifact-name }}.zip
- name: Unzip artifact
shell: bash
if: steps.zip_exists.outputs.files_exists == 'true'
run: unzip ${{ inputs.artifact-name }}.zip
- name: "Check file existence"
uses: andstor/file-existence-action@558493d6c74bf472d87c84eab196434afc2fa029 # v3.1.0
if: ${{ inputs.expect-files }}
with:
fail: true
files: ${{ inputs.expect-files }}