actions/download-artifact
Download artifacts uploaded earlier in the workflow, or from another run.
What it does
actions/download-artifact pulls artifacts produced earlier in the same run into the workspace. With no name, it downloads every artifact from the run.
It pairs one-to-one with upload-artifact and must be on the same major version (v4 with v4).
Usage
workflow (.yml)
steps:
- uses: actions/download-artifact@v4
with:
pattern: test-results-*
merge-multiple: true
path: all-results/Inputs
| Input | Description | Default | Required |
|---|---|---|---|
name | Artifact to download. Omit to download all. | all | No |
path | Directory to download into. | workspace | No |
pattern | Glob to select multiple artifacts by name. | - | No |
merge-multiple | Merge matched artifacts into one directory. | false | No |
run-id | Download from a different run (needs github-token). | current run | No |
Outputs
| Output | Description |
|---|---|
download-path | Absolute path files were downloaded to. |
Notes
Downloading from another run or repository requires run-id plus a github-token with access.
Common errors
- An empty download usually means the
namedoes not match any uploaded artifact, or the upload job did not complete. Checkneeds:ordering. - A v3/v4 mismatch fails. Align both ends on v4.
Security and pinning
- When downloading across runs with a token, scope it to the minimum permission needed.
Alternatives and related
Frequently asked questions
How do I combine artifacts from a matrix?
Upload each leg under a unique name, then download with a
pattern and merge-multiple: true.