]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-build.git/commit
ceph-dev-pipeline: pin podman auth to a persistent authfile 2656/head
authorDavid Galloway <david.galloway@ibm.com>
Wed, 15 Jul 2026 20:18:08 +0000 (16:18 -0400)
committerDavid Galloway <david.galloway@ibm.com>
Thu, 16 Jul 2026 00:01:10 +0000 (20:01 -0400)
commit9a6ed865bbd2ed3260437800779d78d939a5df76
tree455efea8d291f8015c5f9c44e124d6409242241f
parent9b0dbb20988671afe2ae0dbb58ce330b51306ca2
ceph-dev-pipeline: pin podman auth to a persistent authfile

Same fix as aae7f2fd applied to the builder container stage. The
Jenkins agent runs as a systemd service with no login session and no
XDG_RUNTIME_DIR, so podman derives the default auth.json location from
ambient node state at each invocation: /run/user/<uid> if it exists
(which depends on linger/session state), else fallback dirs under /tmp.
All of these are runtime tmpfs paths whose lifecycle is owned by
logind, systemd-tmpfiles, or podman's fallback heuristics rather than
by the job.

We observed a job where podman login succeeded and the base image pull
inside build-with-container.py went anonymous sixty seconds later on
the same node, hitting Docker Hub's unauthenticated per-IP rate limit
(toomanyrequests). The exact event that made the credentials
unavailable is still under investigation, but pinning the authfile to
persistent storage in $HOME removes the dependency on runtime tmpfs
state entirely.

Because each Jenkins sh step runs a fresh shell, REGISTRY_AUTH_FILE is
set via env at the Groovy level so every subsequent sh step in the
matrix cell resolves the same file, including the build stage's
build-with-container.py runs (which we cannot pass --authfile to) and
the container stage's build_container.

Refs: https://tracker.ceph.com/issues/77920

Signed-off-by: David Galloway <david.galloway@ibm.com>
ceph-dev-pipeline/build/Jenkinsfile