CI: build the UCX spcx plugin in the verification container (#2064)
## What? Wire `--build-ucx-spcx-plugin` into `nixl-ci-build-container` (the standalone verification container job — despite the name, it never runs in the PR CI path). - `contrib/Dockerfile`: new `ARG BUILD_UCX_SPCX_PLUGIN=false` + plugin build block, ported from `Dockerfile.manylinux`. Adapted RHEL/lib64 -> Ubuntu/lib: `flexio-sdk` + `dpacc` come from the DOCA 3.3 repo already configured in the image as debs rather than rpms, and the plugin installs into `$UCX_PLUGIN_DIR` via `--libdir=$UCX_PREFIX/lib`. Placed after `COPY . /workspace/nixl`, since `build-container.sh` drops the plugin source into the build context. - `contrib/build-container.sh`: the dockerfile guard now greps the target for the ARG instead of matching paths, so it stays correct as dockerfiles are added and cannot silently no-op on one that ignores the flag. - `build-container-matrix.yaml`: bind `svc-nixl-gitlab-token` + `ucx-plugin-gitlab-url` on the Build NIXL step, pass `SPCX_FLAG`, and surface the setting in the repro hint and result mail. - `proj-jjb.yaml`: new `BUILD_UCX_SPCX_PLUGIN` param, default on (matching #1912). - `BUILD_NIXL_EP`: defaulted to `false` while `build-container.sh` defaults it to `true` with no off-switch, so the job advertised a toggle that never disabled EP. Default it to `true` and say so in the description. ## Why? The verification containers were not updated when spcx plugin support landed (#1918). The flag was wired only into the manylinux/wheel path, and `build-container.sh` hard-errored for any other dockerfile — so the images this job publishes ship without the plugin. The wheel-based LLM verification containers (`nixl-ci-build-llm-container`) need no change: they `pip install` release wheels that already bundle the plugin. ## How? Gated on `ARG BUILD_UCX_SPCX_PLUGIN=false`, so the default build and the per-PR `nixl-ci-build-container-pr` job are unchanged. `Build NIXLBench` is untouched — it goes through `benchmark/nixlbench/contrib/build.sh`. Infinia DDN is deliberately left out of scope. Two things need a real build to confirm: the `flexio-sdk` / `dpacc` deb names (extrapolated from the rpm names), and whether the plugin's DPA transport builds on aarch64 — if FlexIO/dpacc support is x86-only there, the flag will need per-arch gating. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for building and installing the UCX SPCX plugin in supported container and wheel builds. * NIXL endpoint builds are now enabled by default. * Added controls for enabling or disabling SPCX plugin builds. * **Documentation** * Updated build instructions, configuration descriptions, credential requirements, and manual reproduction guidance. * Clarified plugin installation and bundling behavior across supported build types. * **Improvements** * Build notifications now report SPCX plugin status. * Added validation for SPCX plugin-compatible build configurations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: NirWolfer <nwolfer@nvidia.com>
N
NirWolfer committed
d815856fa6790102a44817cbf3769d6618d9757f
Parent: 3fb414f
Committed by GitHub <noreply@github.com>
on 8/19/2026, 7:54:28 AM