Matched signals
- artifacts have expired
- expired artifact
- Could not retrieve artifact
- needs: artifact
- no artifacts to download
- artifact download failed
GitLab CI artifact missing or expired
What this failure means
A downstream GitLab CI job could not retrieve an artifact produced by an earlier job because it expired, was never produced, or was referenced incorrectly.
Symptoms
Faultline looks for one or more of these log fragments:
artifacts have expired
expired artifact
Could not retrieve artifact
needs: artifact
no artifacts to download
artifact download failed
Diagnosis
A downstream GitLab CI job could not retrieve an artifact produced by an earlier job because it expired, was never produced, or was referenced incorrectly.
Fix steps
- Re-run the full pipeline from the beginning instead of retrying only the downstream job.
- Increase the artifact lifetime with
artifacts: expire_in:on the producing job. - Check the failing job’s
needs:ordependencies:references and confirm they point to the correct producer job. - Verify the upstream job actually declares
artifacts.pathsfor the files the downstream job expects.
Validation
- Re-run the pipeline from the producing job onward.
- Confirm the downstream job can download the artifact and no expiry message remains in the log.
Why it matters
GitLab artifacts are temporary by default. Manual reruns, delayed downstream jobs, or incorrect needs: wiring can make a healthy build look broken simply because the required artifact is gone or unreachable.
Prevention
- Set
expire_inrelative to how long downstream jobs and manual reruns must remain valid. - Make artifact-producing and artifact-consuming relationships explicit with
needs:ordependencies:. - Store long-lived outputs in a package registry or object store instead of transient CI artifacts.
How Faultline detects it
Use faultline explain gitlab-ci-artifact-expired to see the full playbook.
faultline analyze build.log
faultline explain gitlab-ci-artifact-expired
Generated from playbooks/bundled/log/ci/gitlab-ci-artifact-expired.yaml. Do not edit directly.