Repository navigation
CI: Move the Build stage from Azure to Jenkins - #12198
Alexey-Rivkin wants to merge 3 commits into
Conversation
|
/build |
|
🤖 Starting review — findings will be posted here when done. |
|
Non-blocking: step timeout went 60 → 180 min with a pipeline cap of 240 (Azure allows 340 per leg); worth confirming the |
They fit: in ucx-build-oss #39 (internal NVIDIA link) the whole matrix took 155 min and the slowest row 152 min, inside the 180 min step timeout. |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: Build #8 failed during pipeline configuration with Root cause: This is a CI-infrastructure mismatch, not a code/compile failure. Evidence from the console log:
So the Secondary defect (real, in the PR under test): the new failure-log uploader added by This is the Implicated commit: File: Suggested fix:
Related: #12166 (adds the missing
|
|
🤖 CI Triage Agent — TL;DR: The dispatcher aborted because its gating child job Full analysisSummary: Root cause: CI configuration/merge-order mismatch, not a product-code bug:
Secondary defect visible in the same log, introduced by this PR's commit: Implicated commit: File: Suggested fix:
Related: #12166 (adds the missing
|
|
🤖 CI Triage Agent — TL;DR: The build never compiled anything — the ci-demo Matrix library aborted immediately because it looked for Full analysisSummary: Root cause: Pure CI configuration mismatch, not a code or compile failure. The only stage that ran was That file does not exist in the tree at the tested revision ( Note this failure is independent of the PR's own change ( Implicated commit: File: Suggested fix: Pick one of these, in order of preference:
Separately, consider having the Matrix wrapper fail with a clearer message that lists the Related: PR #12168 "CI: Match Azure rows in the Jenkins static build job" (contains the renaming commit |
The Jenkins build job ran every row in short mode and lacked the gcc 15.2, centos7, ZE and ICC/PGI rows, so it covered less than the Azure build stage. Give each row the Azure build_mode, add the missing rows, mount /hpc/local for the compiler and gcc modules, and raise the timeouts to fit the long-mode aarch64 rows. The ICC/PGI row uses Rocky 8.9 instead of CentOS 7: nvc emits AVX-512BW on Blossom nodes, which the CentOS 7 assembler rejects. Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
677c88a to
6e23b7b
Compare
|
/build |
|
🤖 Starting review — findings will be posted here when done. |
|
can we split the Jenkinsfile failure-excerpt change from the build matrix change? they are unrelated and carry very different risk. Residual coverage gap: no way to verify here that the Residual coverage gap: the |
I'd keep them together: the full matrix is what makes the failure excerpt necessary, since external contributors can't open Jenkins logs, and both were tested together in ucx-build-oss #41 (internal NVIDIA link).
The whole build took 93 minutes in ucx-build-oss #41 (internal NVIDIA link), so every row fits.
The same run loads them from |
|
🤖 Starting review — findings will be posted here when done. |
|
/build |
|
Residual coverage gap: Residual coverage gap: No secrets are introduced by the diff; the new upload path masks internal |
It runs there: in ucx-build-oss #41 (internal NVIDIA link) the row prints
Its defaults ( |
|
🤖 CI Triage Agent — TL;DR: The build failed in all four parallel "Allocate Environment" stages because Full analysisSummary: Root cause: Each of the 4 matrix rows ran This is not a hang: the 10-minute gap is precisely the configured The commit under test, f226351 ("CI: Upload the console tail when no matrix row failed", Alexey Rivkin), only touches CI log-upload logic and cannot cause an salloc queue timeout — the failure is unrelated to PR #12198. Implicated commit: No code commit caused this (infrastructure). The no-retry allocation logic comes from ffc2138 "CI: Add GPU SLURM test pipeline for scctl cluster" (Iaroslav Sydoruk). File: Suggested fix:
Related: PR #12198 (branch under test, unaffected); PR #11732 "CI: use slurmCI module"; PR #12094 "CI: Jenkins integration testing (do not merge)" |
|
🤖 CI Triage Agent — TL;DR: The build failed because all four parallel Slurm Full analysisSummary: All 4 Root cause: Pure resource starvation, not a hang in UCX code:
Implicated commit: None for the failure itself. Relevant configuration context: d5b6b27 "CI: Run the DL cluster job on the GB200 partition (#11885)", Alexey Rivkin — which moved this job onto the contended File: Slurm allocation parameters passed to Suggested fix:
Related: PR #12198 (trigger, CI log-upload work), PR #11885 / commit d5b6b27 (moved job to GB200 partition), PR #12094 ("CI: Jenkins integration testing") — no existing issue tracking the GB200 allocation timeouts; worth opening one against the CI/infra team.
|
The job uploads its whole console to GitHub on every run, so the log of a failed row is buried among the output of the rows that passed, and green runs upload for nothing. The Blossom lib already knows how to collect the logs of the failed parallel rows, so call that on failure only, and hide the internal hostnames the default filter leaves in. Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
f226351 to
affcce2
Compare
|
🤖 Starting review — findings will be posted here when done. |
|
/build |
|
🤖 CI Triage Agent — TL;DR: The gtest shard 3 of build #66 hung — Full analysisSummary: Stage "Test" (node 158) failed: gtest shard 3/4 on node funk18 hung in Root cause: A hang, not slowness. Timeline from the stage log:
So the The Implicated commit: unknown — not from the PR under test. Most plausible recent candidates on the RC/GET completion path, all merged shortly before this run: File: test/gtest/ucp/test_ucp_memheap.cc:115 (failure point); test/gtest/ucp/test_ucp_rma.cc:880-974 ( Suggested fix:
Related: PR #12198 (build trigger, CI-only). Candidate culprits: #11866, #11915, #11763, #12091. No existing issue found for "request did not complete on time" in
|
|
🤖 CI Triage Agent — TL;DR: No UCX code was tested — all four DL‑GPU worker branches died in the Full analysisSummary: Root cause: Two independent problems, neither in UCX source:
Secondary noise (not fatal, but it delayed/serialized the branches): the k8s namespace quota was exhausted while provisioning the helper pods — repeated Implicated commit: CI-side only. Head commit File: Suggested fix:
Related: #12198 (this PR), #11732 ("CI: use slurmCI module"), #11885 ("CI: Run the DL cluster job on the GB200 partition"), #12094 ("CI: Jenkins integration testing")
|
The Jenkins build job now runs the same rows as the Azure Build stage, so Azure ran every distro build twice per PR for no extra coverage. build_job.yml had no other user and goes with the stage. Signed-off-by: Alexey Rivkin <arivkin@nvidia.com>
|
🤖 Starting review — findings will be posted here when done. |
|
|
||
| # Modules for builds.sh. | ||
| volumes: | ||
| - {mountPath: /hpc/local, hostPath: /hpc/local} |
There was a problem hiding this comment.
can we mount /auto/sw_tools here as well? the Azure build lanes used -v /hpc/local:/hpc/local -v /auto/sw_tools:/auto/sw_tools (and coverity_matrix.yaml mounts /auto/sw_tools/Commercial for the commercial tools/cov-* tree). az_init_modules only adds /hpc/local/etc/modulefiles to MODULEPATH, so a modulefile can load while its payload stays unreachable; if the Intel/PGI payload is not reachable build_icc_check only calls azure_log_warning, so the new rocky89-icc-pgi/compilers row stays green without building anything.
| taskName: '${arch}/${name}' | ||
|
|
||
| env: | ||
| BUILD_ID: "${BUILD_NUMBER}" |
There was a problem hiding this comment.
do the extra keys in the docker rows (build_mode, GCC_MODULE, CONTAINER, require_ze) really reach builds.sh as env? Every other matrix in .ci/pipeline passes per-row values through matrix.axes or env (e.g. ${type} in coverity_matrix.yaml), and build_static_matrix.yaml even flattened the Azure per-container values into global env. A value that does not arrive fails silently - build_ze just prints "Not building with ZE (require_ze!=yes)" and exits 0, and build_mode now falls back to long since the build_mode: "short" env default was removed.
| - { name: "ubuntu2204-rocm6.0", url: "harbor.mellanox.com/ucx/x86_64/ubuntu2204:rocm-6.0.0", arch: x86_64, build_mode: short, CONTAINER: "ubuntu2204_rocm" } | ||
| - { name: "centos7-ib", url: "harbor.mellanox.com/ucx/centos7:5", arch: x86_64, build_mode: sanity } | ||
| # ZE null driver, no GPU needed. | ||
| - { name: "ubuntu2404-ze", url: "harbor.mellanox.com/ucx/x86_64/ubuntu24.04/builder:ze-oneapi-2026.0.0-l0-1.27.0", arch: x86_64, build_mode: ze, require_ze: "yes" } |
There was a problem hiding this comment.
minor: pls update the header of buildlib/dockers/ze-builder.Dockerfile (lines 7-11) - it still documents that the image is consumed by the ubuntu2404_ze container in buildlib/pr/main.yml and that main.yml's image ref must stay in sync, but after this PR the ZE lane is this row on a different registry host.
| - ucx_arm64 | ||
| displayName: Build on aarch64 | ||
|
|
||
| - stage: ucx_perftest_mad_rte |
There was a problem hiding this comment.
minor: the container resources that only build_job.yml referenced are now dead config (rhel82, rhel90, rhel100, rhel100_aarch64, rocky89/96(+_aarch64), debian113/125/130, sles15sp7/16sp0(+_aarch64), fedora44(+_aarch64), ubuntu2604/2610(+_aarch64), azurelinux40(+_aarch64), openeuler*, uos201060a*, tencentos44*, ctyunos2507*, centos10stream, ubuntu2204_rocm_6_0_0, ubuntu2404_ze, ubuntu2404_aarch64) together with the DOCKER_OPT_ZE_GPU variable that only that container used; pls drop them with the stage.
|
The three No way to verify here that the Jenkins helper exposes |
What?
Move the distro build matrix from the Azure Build stage to Jenkins, and show failure logs on GitHub.
Why?
The Jenkins build job covered less than Azure, external contributors cannot open Jenkins logs, and running the same builds on both CIs doubles the cost of every PR.
How?
build_matrix.yaml: the Azure rows and build modes.Jenkinsfile.github: on failure, upload the failed rows' logs with the Blossom lib'suploadParallelLogs, with internal hostnames hidden.buildlib/pr/main.yml: drop the Build stage;build_job.ymlhad no other user.Tested: ucx-build-oss #46, 42/42 rows (internal NVIDIA link). Log upload on failure: ucx-test-gpu-oss #66 and ucx-test-dl-gpu-oss #60, failed rows only, hostnames hidden; the 7 green jobs uploaded nothing.