GitLab CI job image drift symptom: tag pinning vs digest pinning across runners
0 reputation · 07 Nov 2022, 20:38 UTC
Reproducibility gap across GitLab CI/CD runners
A team using GitLab CI/CD wants identical job execution environments across multiple runner hosts so that the same commit produces the same artifacts regardless of which runner picks up the job.
The .gitlab-ci.yml image keyword accepts registry tags or Docker-style digests, and include: project can reference another repository by branch, tag, or commit SHA. Registry tags are generally mutable, runner pull_policy and local image caches can serve previously pulled contents, and branch-based include refs advance over time. Digest and SHA pinning improve stability but add update friction and may vary in support across runner versions and executors.
Which pinning strategy for job images and included templates reliably eliminates cross-runner drift without assuming registry immutability?
How does runner pull_policy interact with cached or mirrored images to mask upstream tag changes for a specific executor?
What verification steps confirm that two runners are executing against the same image contents when the pipeline definition is identical?