ci(podvm): add universal cc-nvidia SEV-SNP image build#52
Draft
alhassankhedr-cohere wants to merge 1 commit into
Draft
ci(podvm): add universal cc-nvidia SEV-SNP image build#52alhassankhedr-cohere wants to merge 1 commit into
alhassankhedr-cohere wants to merge 1 commit into
Conversation
Add an opt-in cc-nvidia podvm variant (TDX + SEV-SNP + Azure SNP-vTPM + NVIDIA in one AA) so a single image serves GCP-TDX, GCP-SNP (RTX 6000 PRO) and Azure-SNP (H100). The live tdx-nvidia push/tag path is unchanged. - build-podvm-cohere: TEE_PLATFORM workflow_dispatch input; TDX-only measurement/baseline/smoke steps guarded; metadata-only measurements for cc-nvidia (baselines deferred to Phase 2); opt-in deploy_azure job. - deploy-gcp-cohere: derive guest-os-features from the image tee_platform (cc-nvidia -> TDX_CAPABLE,SEV_SNP_CAPABLE). - deploy-azure-cohere: new reusable workflow publishing a ConfidentialVmSupported Compute Gallery image (gated on Azure CC infra). - versions.yaml: pin guest-components to the cc-nvidia AA build (66aa03f); branch-scoped, do not merge to cohere until TDX re-baseline (Phase 2).
| type: string | ||
|
|
||
| permissions: | ||
| id-token: write # Azure login via OIDC federated credentials |
| name: Azure | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 |
| oras version | ||
|
|
||
| - name: Login to GHCR | ||
| uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4 |
Comment on lines
+12
to
+32
| on: | ||
| workflow_call: | ||
| inputs: | ||
| image_tag: | ||
| description: "OCI artifact tag in GHCR to deploy" | ||
| required: true | ||
| type: string | ||
| secrets: | ||
| AZURE_CLIENT_ID: | ||
| required: true | ||
| AZURE_TENANT_ID: | ||
| required: true | ||
| AZURE_SUBSCRIPTION_ID: | ||
| required: true | ||
|
|
||
| workflow_dispatch: | ||
| inputs: | ||
| image_tag: | ||
| description: "OCI artifact tag in GHCR to deploy" | ||
| required: true | ||
| type: string |
| --location "$LOCATION" \ | ||
| --os-vhd-storage-account "$STORAGE_ACCOUNT" \ | ||
| --os-vhd-uri "$BLOB_URI" \ | ||
| --tags "tee=${TEE_PLATFORM}" "image_name=${IMAGE_NAME}" "caa_commit=${{ steps.pull.outputs.caa_commit }}" |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 4610711. Configure here.
| needs.deploy-gcp.result == 'success' && | ||
| (github.event_name == 'push' || | ||
| (github.event_name == 'workflow_dispatch' && inputs.deploy_gcp)) | ||
| (github.event_name == 'workflow_dispatch' && inputs.deploy_gcp && inputs.tee_platform == 'tdx-nvidia')) |
There was a problem hiding this comment.
Smoke gate ignores tee default
Medium Severity
The smoke-gcp-tdx job only runs on manual dispatch when inputs.tee_platform == 'tdx-nvidia', but workflow TEE_PLATFORM uses inputs.tee_platform || 'tdx-nvidia'. API dispatches that omit tee_platform still build and deploy TDX images yet skip the smoke job, unlike UI runs with the same intent.
Reviewed by Cursor Bugbot for commit 4610711. Configure here.
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
Adds an opt-in
cc-nvidiapodvm image variant so a single image serves GCP-TDX, GCP-SNP (RTX 6000 PRO) and Azure-SNP (H100). The mkosi rootfs is already TEE-agnostic (generic HWE kernel handles TDX+SNP,tpm2-toolspresent,nvidia-580-opencovers Hopper+Blackwell); the only TEE-specific bit is the prebuilt AA artifact pulled byTEE_PLATFORM, now available as the universalcc-nvidiavariant (companion guest-components PR).The live
tdx-nvidiapush/tag path and its enforced TDX baselines are unchanged.Changes
build-podvm-cohere.yaml:TEE_PLATFORMworkflow_dispatchinput (defaulttdx-nvidia); TDX-only measurement/baseline/smoke steps guarded; metadata-onlymeasurements.jsonforcc-nvidia(no rtmr2 — baselines deferred to Phase 2); opt-indeploy_azurejob.deploy-gcp-cohere.yaml: deriveguest-os-featuresfrom the imagetee_platform(cc-nvidia->TDX_CAPABLE,SEV_SNP_CAPABLE).deploy-azure-cohere.yaml(new): reusable workflow publishing aConfidentialVmSupportedAzure Compute Gallery image version; gated on the Azure CC infra (secrets/vars documented in the file).versions.yaml: pin guest-components to thecc-nvidiaAA build (66aa03f).Test plan
cc-nvidiaAA publish run green.build-podvm-cohere(tee_platform=cc-nvidia,deploy_gcp=true); image builds + deploys to GCP.Warning
Do NOT merge to
cohereyet. Theversions.yamlpin (66aa03f) is ahead of the live pin and rebuilds thetdx-nvidiaAA, which would change the live TDX measurements. Merge only after the TDX baselines are regenerated (Phase 2).Note
High Risk
Touches confidential VM image pipeline, attestation metadata, and a guest-components pin that would change live TDX AA if merged without baseline regeneration; Azure/GCP publish paths add production image surface area.
Overview
Adds an opt-in
cc-nvidiaPodVM build path alongside the unchanged defaulttdx-nvidiapush/tag flow, so one image can target GCP TDX/SNP and Azure SEV-SNP while deferring attestation baselines for the universal variant (Phase 2).build-podvm-cohere.yamlgainsworkflow_dispatchinputs fortee_platformanddeploy_azure;TEE_PLATFORMdrives which AA OCI artifactmake binariespulls. TDX measurement, baseline updates, smoke artifacts, and GCP TDX smoke run only whentee_platformistdx-nvidia. Forcc-nvidia, the workflow writes metadata-onlymeasurements.json(nortmr2/mrtd), makescom.cohere.rtmr2optional on GHCR push, and can chain a newdeploy-azurejob.deploy-gcp-cohere.yamlreadstee_platformfrom measurements and setsguest-os-featuresaccordingly (cc-nvidia→TDX_CAPABLE,SEV_SNP_CAPABLE).deploy-azure-cohere.yaml(new reusable workflow) verifies GHCR attestation, converts the disk to fixed VHD, and publishes a ConfidentialVmSupported Azure Compute Gallery image version.versions.yamlpins guest-components to66aa03ffor the universal AA build, with an explicit note not to merge tocohereuntil TDX baselines are regenerated.Reviewed by Cursor Bugbot for commit 4610711. Bugbot is set up for automated code reviews on this repo. Configure here.