feat(runai): add Run:AI compatibility kit suite - #604
Draft
cparadis-nvidia wants to merge 1 commit into
Draft
Conversation
Integrate the Run:AI compatibility kit (a prebuilt Docker image that runs the Run:AI E2E test suite against a Kubernetes cluster) into the step-based validation framework: - providers/shared/run_compatibility_kit.py: stages the kubeconfig into a uid-65532 Docker volume (mirroring the kit Makefile), runs the kit, parses the Allure summary + CSV into the provider-neutral JSON contract. --preflight (setup) checks docker/kubeconfig/image availability; --cleanup (teardown) sweeps leftovers from aborted runs. Skips cleanly when docker or a kubeconfig is missing. - suites/runai.yaml: kubernetes-capability suite wiring preflight/run/ cleanup steps and the RunAICompatibilityCheck validation. Kit image and kubeconfig come from RUNAI_COMPAT_KIT_IMAGE / KUBECONFIG env vars. - isvtest validations/runai.py: RunAICompatibilityCheck asserts tests.compatibility passed, surfacing the kit's failed-test detail. - env_catalog: register RUNAI_COMPAT_KIT_IMAGE (Run:AI section) for isvctl configure/doctor. The kit image is never built here (its build clones a private repo). It publishes to NVIDIA NGC without guest access: the default image is nvcr.io/nvidia/runai/runai-compatibility-kit:latest and pulling from nvcr.io authenticates via docker login with NGC_API_KEY (key passed over stdin, never argv); a locally preloaded image (e.g. the kit Makefile's runai/certification-kit:latest) needs no credentials. The new check ships unreleased. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: cparadis nvidia <cparadis@nvidia.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrates the Run:AI compatibility kit — a prebuilt Docker image whose entrypoint runs the Run:AI E2E test suite against a Kubernetes cluster — into the step-based validation framework. The kit is the script that does the work; isvctl orchestrates it and asserts its verdict:
What's in here
providers/shared/run_compatibility_kit.py— stages the kubeconfig into a uid-65532 Docker volume (mirroring the kit's own Makefile flow, since the kit runtime can't read a host-owned mode-0600 bind mount), runs the kit, and parses its Allure summary + CSV into the provider-neutral contract (tests.compatibility.{passed,message,error,failed_tests}). Modes:--preflight(setup): docker + kubeconfig present, image available (NGC login + pull if needed)--cleanup(teardown): best-effort sweep of leftover container/volume from aborted runssuites/runai.yaml— kubernetes-capability suite wiring the three steps and the validation. Steps are gated withrequires_available_validationsso the expensive docker run never happens while the check is unreleased.isvtest/validations/runai.py—RunAICompatibilityCheck, asserting the kit verdict and surfacing failed-test names.env_catalog— registersRUNAI_COMPAT_KIT_IMAGE(Run:AI section) forisvctl configure/doctor.Design notes
run-ai/runai-e2e-internalrepo; it publishes to NVIDIA NGC without guest access. Default image:nvcr.io/nvidia/runai/runai-compatibility-kit:latest. Pulling from nvcr.io authenticates viadocker loginwithNGC_API_KEY(key passed over stdin, never argv). A locally preloaded image (e.g. the kit Makefile'srunai/certification-kit:latest) needs no credentials.deploy_nim.pysemantics; merged multi-suite runs stay green).released_tests.jsonuntouched; run withISVTEST_INCLUDE_UNRELEASED=1until the release process lands it.Testing
scripts/tests/test_run_compatibility_kit.py,isvtest/tests/test_runai.py): parsing, verdict edge cases (broken/unknown/all-skipped), image/kubeconfig resolution precedence, NGC login (incl. key-never-in-argv), all three mode flows with docker mocked.make test(151 passed),make lint,make demo-test,uvx pre-commit run -a, suite wiring validator — all green.runai/certification-kit:latest(same uid, same/bin/bashstaging path, asserts the kubeconfig actually landed in the volume) and ran the suite end to end:Open item
artifact-metadata.jsonstill saysservice_name: runai-certification-kit— if the publish pipeline derives the NGC image name from it, the published path will be...runai-certification-kit, not the...runai-compatibility-kitdefault used here. Needs the rename on the kit side (or a default bump here) before this leaves draft.🤖 Generated with Claude Code