GitLab CI artifact missing or expired

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.

gitlab-ci-artifact-expired medium confidence ci

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

  1. Re-run the full pipeline from the beginning instead of retrying only the downstream job.
  2. Increase the artifact lifetime with artifacts: expire_in: on the producing job.
  3. Check the failing job’s needs: or dependencies: references and confirm they point to the correct producer job.
  4. Verify the upstream job actually declares artifacts.paths for 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_in relative to how long downstream jobs and manual reruns must remain valid.
  • Make artifact-producing and artifact-consuming relationships explicit with needs: or dependencies:.
  • 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.

Try it on your own failed log

$ faultline analyze failed.log
Want this across every CI run? Faultline Teams tracks recurring failures across all your repos and surfaces patterns in a shared dashboard.