From 64a6621735c79ff60cb08966447f8716c4761765 Mon Sep 17 00:00:00 2001 From: Hexin Wang Date: Thu, 30 Jul 2026 18:10:49 +0000 Subject: [PATCH] ci: build CI image against nvidia-resiliency-ext main Add an imperative uv pip install layer to Dockerfile.ci.dev that replaces the locked NVRx 0.6.0 wheel with upstream main, so the whole CI suite runs against the latest NVRx. Done via 'uv pip install' rather than pyproject.toml + uv.lock because every 'uv sync' in this repo passes --locked, which rejects a pyproject change without a matching relock. Installed with dependencies (NVRx main adds langchain-core, mcp, logsage, uvicorn and slack-sdk over 0.6.0), using the same override-dependencies trick as pyproject.toml to keep the base image's torch/torchvision/triton intact, plus the pydantic<2.14 cap that langchain_core requires. EXPERIMENT ONLY -- not intended to merge. Co-Authored-By: Claude Opus 5 (1M context) Signed-off-by: Hexin Wang --- docker/Dockerfile.ci.dev | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docker/Dockerfile.ci.dev b/docker/Dockerfile.ci.dev index bd0bd78325b..a9cc3a345bf 100644 --- a/docker/Dockerfile.ci.dev +++ b/docker/Dockerfile.ci.dev @@ -126,6 +126,40 @@ EOF COPY assets/ /opt/data/ ENV UV_PYTHON=$UV_PROJECT_ENVIRONMENT/bin/python +# EXPERIMENT ONLY -- DO NOT MERGE. +# Replace the locked nvidia-resiliency-ext release with upstream NVRx main so CI +# exercises the latest NVRx. Installed imperatively rather than via pyproject.toml +# + uv.lock so that every `uv sync --locked` gate in this repo stays satisfied. +ARG NVRX_REF=main +ENV NVRX_REF=${NVRX_REF} +RUN bash -ex <<"EOF" + # NVRx main adds langchain-core/langchain-openai, mcp, logsage, setproctitle, + # uvicorn, slowapi and slack-bolt/slack-sdk on top of the pinned 0.6.0, so + # --no-deps would leave the package un-importable. Install with deps and reuse + # the override trick from pyproject.toml's [tool.uv].override-dependencies to + # keep the base image's torch/torchvision/triton untouched. + cat >/tmp/nvrx-overrides.txt <<'OVERRIDES' +torch; sys_platform == 'never' +torchvision; sys_platform == 'never' +triton; sys_platform == 'never' +OVERRIDES + # pydantic 2.14 breaks langchain_core's module-level RunnablePassthrough() + # instantiation, which NVRx main now imports directly. Same cap the + # transformer-engine dependency-metadata entry applies. + echo "pydantic<2.14" >/tmp/nvrx-constraints.txt + + uv pip install \ + --reinstall-package nvidia-resiliency-ext \ + --overrides /tmp/nvrx-overrides.txt \ + --constraints /tmp/nvrx-constraints.txt \ + "nvidia-resiliency-ext @ git+https://github.com/NVIDIA/nvidia-resiliency-ext.git@${NVRX_REF}" + + # Record the resolved commit -- `main` floats, so the build log is the only + # record of what was actually tested. + uv pip freeze | grep -i resiliency + python -c "import nvidia_resiliency_ext; print('NVRx import OK')" +EOF + ##### For NVIDIANS only ##### FROM main AS jet ARG JET_API_VERSION