CI: automate release wheel publishing (poller + nightly job reuse) - #1912
Conversation
|
👋 Hi Alexey-Rivkin! Thank you for contributing to ai-dynamo/nixl. Your PR reviewers will review your contribution then trigger the CI to test your changes. 🚀 |
4aeae73 to
c2f67ed
Compare
c2f67ed to
b868737
Compare
b868737 to
ee67498
Compare
ee67498 to
f707769
Compare
f707769 to
7f7a260
Compare
7f7a260 to
5456224
Compare
5456224 to
a110a48
Compare
a110a48 to
785d38f
Compare
785d38f to
53a6777
Compare
53a6777 to
defa9c8
Compare
defa9c8 to
e81bcff
Compare
e81bcff to
afa9f49
Compare
Since ai-dynamo#2009 CUDA_VERSION is a Dockerfile ARG defaulting to 13.0, not an ENV from the old combined base image. The nightly never passes it, so the cu12 run builds as cu13: no nixl meta wheel published, torch +cu130 in a 12.9 build. Builds stay green, so the missing artifact goes unnoticed. Derive it from BASE_TAG and move the nightly + release poller to the same nvcr.io ubi8 CUDA base the per-PR wheel job already uses.
A green nightly sent mail nobody needed to read. Send the report only when the build fails, and default MAIL_TO to nixl-ci-alerts@exchange.nvidia.com, matching nixl-ci-nightly.
|
/build |
|
🤖 CI Triage Agent — TL;DR: The tsan "Test Sanitizer" stage was aborted (exit 143 / Full analysisSummary: The Root cause: Loss of the Jenkins agent remoting channel, not a test failure or hang. At Implicated commit: unknown — no application/source commit is implicated; this is a CI-agent/infrastructure fault. The tested commit 9530ad7 (PR #1912) is not the cause. File: N/A (Jenkins agent Suggested fix: Re-run the Related: none found. |
Release wheels are expected to ship both plugins, and the poller already forces them on. Leaving the job defaults off meant every manual or nightly run silently produced plugin-less wheels unless someone remembered to tick the boxes.
The nightly wheel job landed on main meanwhile (ai-dynamo#2151, ai-dynamo#2166), so main now owns build-wheel-nightly-matrix.yaml and the job's parameters. Took main's version wholesale and kept only the poller job, its matrix config and the scan script from this branch.
ai-dynamo#2166 replaced the nightly's UCX_VERSION / BASE_IMAGE / BASE_TAG and the two plugin flags with a single CUDA_MAJOR choice, so the poller was passing five parameters the job no longer has. It now triggers with CUDA_MAJOR alone and lets each release pin its own UCX and plugin versions in build-container.sh. The nightly also passes --build-options-file unconditionally, which older release branches reject at option parsing, so the scan skips a release whose build-container.sh predates that flag instead of fanning out builds that cannot succeed.
Reverted after the test run. Lets the poller trigger real nightly builds of main (the only ref supporting --build-options-file) before a compatible release branch exists.
|
🤖 CI Triage Agent — TL;DR: The AWS Batch test pod failed instantly because its Full analysisSummary: "AWS NIXL Validation" job failed — the AWS Batch pod's Root cause: The command run inside the pod is Implicated commit: Not a code-defect commit; the clone mechanism dates to File: Suggested fix: Make the in-pod checkout able to fetch the PR ref with credentials, rather than an anonymous clone of a branch name that doesn't exist on the public remote. Concretely: (1) inject a token into the clone URL / git credential helper for the batch job (e.g. use an authenticated Related: none found (search the repo for prior "could not read Username" AWS batch clone failures; none surfaced in history). |
…0.0" The e2e run is done: poller ai-dynamo#55 scanned, gated the older releases and spawned both nightly builds with the right parameters. Drop the test-only hooks so the poller is back to scanning real release branches.
|
Tested on main branch with the test commit e090cc5 (reverted). |
|
🤖 CI Triage Agent — TL;DR: The AWS Batch test pod aborted during Full analysisSummary: "AWS NIXL Validation" failed because the in-pod build script aborted while installing nvm; the AWS Batch job then reported FAILED. Root cause: In the streamed pod log the last activity is the nvm installer: Implicated commit: unknown (the nvm install step predates recent history; the failure is an external/transient GitHub error, not a code regression) File: Suggested fix: Re-run the job first — this is very likely a transient GitHub clone failure. To stop it recurring, make the nvm install robust: wrap it in a retry loop and/or set export GIT_TERMINAL_PROMPT=0
for i in 1 2 3; do "${BUILD_TMP}"/install_nvm.sh && break || sleep 10; done(Optionally pre-configure Related: none |
|
/build |
|
🤖 CI Triage Agent — TL;DR: The ASAN and TSAN sanitizer builds both failed during Full analysisSummary: Root cause: Implicated commit: unknown (the failure is environmental — no GitHub access in the sandbox — not a specific code change; branch File: Suggested fix: Convert This uses an HTTP download (reachable via the CI package mirror) instead of a raw Related: none found. |
|
🤖 CI Triage Agent — TL;DR: The sanitizer builds (asan+ubsan and tsan) both failed at meson setup because the Full analysisSummary: Both parallel sanitizer Build stages (nodes 125 asan/ubsan and 124 tsan) failed during Root cause: Implicated commit: unknown (the taskflow wrap-git dependency; not attributable to any of the recent meson.build commits — the failure is the fetch method, File: Suggested fix: Replace the Alternatively, pre-install taskflow into the sanitizer base image (so Related: none (no matching issue/PR found) |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: Root cause: UCX built and installed fine; the failure is in the NIXL Meson configure step. Implicated commit: unknown — File: Suggested fix: Provide taskflow without cloning from github inside the container. Options, in order of preference:
Related: none found in issue/PR search. |
|
🤖 CI Triage Agent — TL;DR: All four "Build image" stages failed because Full analysisSummary: The container image builds (nixl & nixlbench, both x86_64 and aarch64) failed during Dockerfile Root cause: Implicated commit: none — not a code regression. (PR #1912 / commit 37c88a5 is unrelated to the failure.) File: Dockerfile Suggested fix:
Related: none found in issue/PR search directly; see prior mirror-migration commits
|
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: "Run DL NIXL EP tests" stage failed with exit code 124 — the elastic EP test ( Root cause: All 4 ranks hung in Implicated commit: Not a code regression. The warning/loop was added by ef5aad2 (Raul Akhmetshin, PR #1410); the underlying failure is infrastructure (IB ports down on the allocated node). File: src/plugins/ucx/mem_list.cpp:163-174 (the unbounded Suggested fix: Infra: check/fix the InfiniBand fabric on Related: PR #1410 (added the timeout warning), PR #1409/#1912 context branch |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: Docker image build (stage 153) failed at exit code 128 when Root cause: In Implicated commit: Not a code regression — the failing clone predates recent changes. The surrounding EP build path was last touched by c984ce6 (lishapira, "CI: add vLLM + NIXL EP test to the EP CI job", #2154), but the failure is environmental. File: Suggested fix: Restore/verify outbound access to github.com from the build node (or the git credential helper / token used for Related: none (search returned only unrelated PR #2135). |
|
🤖 CI Triage Agent — TL;DR: The container Full analysisSummary: All four parallel container builds (nixl & nixlbench, x86_64 & aarch64) failed in their Root cause: Intermittent GitHub access failure during in-Dockerfile Implicated commit: unknown — not caused by a source change; the failing steps are pre-existing Dockerfile dependency clones. (PR #1912, branch File: Dockerfile build steps in the container recipe — the Suggested fix: Re-run the build first — it is likely to pass. To make it robust, harden the git clones the way the tarball downloads already are: wrap them in a retry loop (e.g. Related: PR #1912 (the PR under test); no existing issue tracks this specific flake. |
What?
nixl-build-wheel-release-poller(new): every 4 hours, finds release-branch commits with no published wheels in Artifactory and triggersnixl-ci-build-wheel-nightlyper missing CUDA variant, withPUBLISH_DIR=release/<ver>.Published wheels: https://artifactory.nvidia.com/artifactory/sw-nbu-swx-nixl-pypi-local/release/
Why?
Release wheels are published manually today. With this, every merge to a release branch publishes automatically (HPCINFRA-4573).
How?
release/*branches with version >= 1.4.0, auto-detected, no per-release config.NIXL_VERSION,CUDA_MAJOR,PUBLISH_DIRandci_refspeconly. UCX and the bundled plugins are not passed - each release ships what its owncontrib/build-container.shpins.build-container.shpredates--build-options-file, since the nightly always passes it and older scripts reject unknown options. Release branches cut after ci: streamline nixl-ci-build-wheel-nightly parameters and tag wheels with build provenance #2166 pass on their own.ci_refspec=refs/pull/<n>/head- it forwards the ref to the builds it triggers.Summary by CodeRabbit
ci_refspec) and a configurable publish subdirectory (PUBLISH_DIR, defaultverification), with updated Artifactory upload paths for release publishing.