ci: fix build-container push step auth and silent curl failure - #1997
Conversation
|
👋 Hi NirWolfer! Thank you for contributing to ai-dynamo/nixl. Your PR reviewers will review your contribution then trigger the CI to test your changes. 🚀 |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe Jenkins container push step now propagates shell, pipeline, and Artifactory HTTP failures. CI documentation describes the metadata update and fail-fast behavior. ChangesContainer push error handling
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.ci/jenkins/lib/build-container-matrix.yaml:
- Around line 181-182: Update the curl invocation in the image publication step
to avoid embedding ARTIFACTORY_PASSWORD in command-line arguments. Create a
temporary credentials file with 0600 permissions, use it via curl’s --netrc-file
or --config option, and register an EXIT trap to remove the file, while
preserving the existing authenticated PUT request.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: ddd118f0-c383-4757-b015-6b1ab3b7ea2f
📒 Files selected for processing (2)
.ci/docs/ci-overview.md.ci/jenkins/lib/build-container-matrix.yaml
|
/build |
|
🤖 CI Triage Agent — TL;DR: The "Run vLLM sanity" stage (#518) failed because the model prefetch Full analysisSummary: Root cause: In Implicated commit: unknown (not a code regression; the failure is external HF rate-limiting). The prefetch logic lives in File: Suggested fix: Make the model prefetch resilient to HF anonymous rate limits:
Related: none found. |
|
/build |
|
🤖 CI Triage Agent — TL;DR: The aarch64 container build (stage 233, Full analysisSummary: aarch64 NIXL container image build failed at Dockerfile STEP 23/62 (DOCA host install + Root cause: Implicated commit: none — not caused by a code commit (326d53f / PR #1997 is unrelated; recent Dockerfile history shows no change to STEP 23). File: Suggested fix:
Related: none found. |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: The vLLM sanity test (stage 535, Root cause: At line 99 of Implicated commit: unknown — not a code regression; caused by external HF Hub rate limiting of the CI node's shared IP. File: Suggested fix: Authenticate the prefetch so it isn't subject to the anonymous per-IP rate limit: inject a Related: none found. |
The global credentials block in ci-demo only registers available credentials; steps must explicitly list credentialsId to have them injected. The Push step had no credentialsId, so ARTIFACTORY_PASSWORD was empty when curl ran, causing a 401 on every build. Also add set -eo pipefail and curl --fail so any API failure propagates and fails the step instead of being silently swallowed. Signed-off-by: NirWolfer <nwolfer@nvidia.com>
5a1f747 to
7606cfc
Compare
|
/build |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: Jenkins Root cause: A segmentation fault in the UCX backend's transfer-then-fail error-handling code path. The test first passed at Implicated commit: Not definitively from logs. Most likely candidates touching this path recently: File: UCX backend error-handling path exercised by Suggested fix: Reproduce locally with Related: PR #1880 (UCX pending-request drop on thread exit), PR #1846 (forcibly close UCP endpoints), PR #1743 (proposal to run gtest in a single process — relevant to the parallel/retry behavior seen here). No existing issue matches this specific SIGSEGV. |
|
🤖 CI Triage Agent — TL;DR: The "Run DL CPP tests" stage was killed (exit 143 / SIGTERM) after Full analysisSummary: Jenkins job Root cause: A hang, not a slow job. Timestamps show the test ran normally with sub-second gaps up through the
Each non-inline (rendezvous) GET/READ in the DRAM→VRAM handler-reuse path is blocking for many minutes on completion, i.e. the UCX GET request never (or barely) completes and the test's poll/verify loop wedges. This is a functional hang in the UCX backend's rendezvous GET path exercised with handler reuse + cross-memory-type (host DRAM → CUDA VRAM) transfers. Implicated commit: Not definitively proven from logs alone, but the prime suspect is #1917 File: Suggested fix: Do not raise the stage time limit. Investigate the UCX rendezvous GET completion path for DRAM→VRAM transfers with handler reuse:
Related: PR #1917 (#1917); PR #1854; the failing run is PR #1997 / build #1658.
|
|
🤖 CI Triage Agent — TL;DR: The two GPU "Allocate Environment" stages were killed (exit 143/SIGTERM) after ~58 minutes because the SLURM Full analysisSummary: Jenkins aborted the Root cause: In both stages the Implicated commit: unknown — not caused by commit 34da9ff; this is an infrastructure/capacity failure in the SLURM File: N/A (Jenkins/SLURM allocation via Suggested fix: Treat as infra: check Related: none found (searched issues/PRs for the allocation timeout signature; no matching report). |
|
🤖 CI Triage Agent — TL;DR: The build itself passed; the pipeline failed in "Allocate DL Environment" because Full analysisSummary: Jenkins stages "Allocate DL Environment" (node IDs 200 and 183) failed after the Slurm Root cause: Resource starvation on the GPU cluster. At Implicated commit: none — not caused by commit 34da9ff / PR #1997. The Docker image compiled, linked, installed, and pushed successfully. File: N/A (CI infrastructure / Slurm allocation step, Suggested fix: Re-trigger the build when the Related: none found. |
Summary
curlcall usedAuthorization: Bearerwhich doesn't match theusernamePassword(svc-nixl-new-artifactory-token) credential type —docker pushwas succeeding but the subsequent REST API call to set image properties was returning 401 on every runcurlexits 0 on HTTP errors by default, and the Push step had noset -e, so the 401 was printed and silently swallowed — the step passed green while properties were never setChanges
Authorization: Bearer ${ARTIFACTORY_PASSWORD}to-u "${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD}"(basic auth, matching the credential type)--failto curl so HTTP 4xx/5xx exits non-zero; addedset -eo pipefailto the Push step so that exit propagates and fails the Jenkins stepSummary by CodeRabbit
Summary by CodeRabbit
Bug Fixes
Documentation