Skip to content

trusted-execution-clusters: Introduce Azure tests#79393

Draft
Jakob-Naucke wants to merge 2 commits into
openshift:mainfrom
Jakob-Naucke:tec-azure2
Draft

trusted-execution-clusters: Introduce Azure tests#79393
Jakob-Naucke wants to merge 2 commits into
openshift:mainfrom
Jakob-Naucke:tec-azure2

Conversation

@Jakob-Naucke

@Jakob-Naucke Jakob-Naucke commented May 18, 2026

Copy link
Copy Markdown
Member

Use native OpenShift as Trustee platform, attest Azure VMs against it. Optional test.

Summary by CodeRabbit

This PR adds optional Azure integration testing to the OpenShift CI configuration for the trusted-execution-clusters operator. It introduces an Azure CI variant, a build image and step-ref that run Azure-focused integration tests which attest Azure VMs against a native OpenShift Trustee cluster, and the CI wiring to build/push a test image and provide Azure credentials. The change is gated and only runs when the optional job/ref is invoked.

What changed (practical terms)

  • ci-operator config (ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml)

    • Adds an Azure variant for the trusted-execution-clusters operator CI.
    • Declares base_images including nested-podman and sets the build root to ocp/builder (rhel-9-golang-1.25-openshift-4.21).
    • Adds an azure-test-image build that copies oc, installs Rust (rustup) and the Azure CLI, and exposes Cargo binaries.
    • Registers an optional integration-test that requires nested-podman, skips on docs/license/bundle/README/gitignore-only changes, and references the new Azure ref. (The YAML currently references an openshift-org-aws workflow/profile — reviewers should confirm the intended cluster_profile/workflow mapping for Azure.)
  • step-registry ref and commands (ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test)

    • Adds a command script that:
      • Derives the OpenShift namespace and internal image registry via oc and logs in with podman using oc credentials.
      • Reads Azure service-principal and test parameters from a mounted secret (/tmp/secrets/azure).
      • Performs az login, builds/pushes images (make push), and runs integration tests (make integration-tests) with VIRT_PROVIDER=azure and PLATFORM=openshift.
    • Adds a ref YAML using azure-test-image, enables nested_podman, mounts the trusted-execution-clusters-azure secret from test-credentials, and requests 500m CPU / 500Mi memory.
    • Adds ref metadata mapping approvers/reviewers (alicefr, Jakob-Naucke).
  • OWNERS

    • Updates approvers/reviewers for the step/ref (removes two prior entries; ensures alicefr and Jakob-Naucke are listed). Adds a small owners redirect file for the azure-integration-test directory.

Practical impact

  • Enables optional Azure VM attestation integration tests for trusted-execution-clusters in OpenShift CI using a native Trustee cluster.
  • Requires Azure service-principal secrets and registry credentials to be made available to CI and the nested-podman capability; it does not change default CI signal unless the optional job/ref is enabled.
  • CI will build a Rust+Azure-CLI test image, push it to the internal registry, and run make-based integration tests against Azure.

Notes for reviewers

  • Confirm the intended cluster_profile/workflow mapping: the config references openshift-org-aws despite being an Azure test.
  • Inspect the Containerfile fix the author applied (they removed a buggy line) and verify the azure-test-image build steps and installed packages are appropriate for RHEL9/ocp builder usage.
  • PR is currently a draft; the author retried CI several times (commands in comments: /test all, /retest, /pj-rehearse) while debugging CI triggers.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 18, 2026
@openshift-ci

openshift-ci Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds an Azure CI operator variant that builds an azure-test-image (Rust + Azure CLI), registers an optional nested-podman integration test, provides a step-registry ref and execution script for Azure integration tests, and updates OWNERS metadata.

Changes

Azure Integration Test

Layer / File(s) Summary
Azure operator CI configuration
ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml
Defines the Azure variant CI operator configuration: nested-podman base, azure-test-image build installing rustup and Azure CLI, OCP 4.21 nightly release stream, default resource requests/limits, optional integration-test using nested-podman, and generated metadata.
Azure integration test step registry and execution
ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.yaml, ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh, ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.metadata.json, ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/OWNERS
Adds a step-registry ref that uses azure-test-image, enables nested podman, runs the provided script, mounts trusted-execution-clusters-azure secrets at /tmp/secrets/azure, sets CPU/memory requests (500m/500Mi), and maps the ref to approvers/reviewers alicefr and Jakob-Naucke. The script logs into the internal registry and Azure, then runs make push and make integration-tests.
Ownership update
ci-operator/step-registry/trusted-execution-clusters/ref/OWNERS
Updates parent OWNERS to remove fangge1212 and yalzhang, ensuring alicefr and Jakob-Naucke are listed as approvers and reviewers.

Sequence Diagram

sequenceDiagram
  participant Script as azure-integration-test-commands.sh
  participant OC as oc
  participant Podman as podman
  participant Az as az
  participant Registry as InternalRegistry

  Script->>OC: discover namespace & internal registry (oc project, oc get)
  Script->>Podman: podman login to InternalRegistry using oc whoami token
  Script->>Az: az login using service-principal secrets
  Script->>Registry: make push -> push built images (azure-test-image)
  Script->>Script: make integration-tests (run tests against pushed images)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

lgtm, rehearsals-ack

Suggested reviewers

  • kuudori
🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'trusted-execution-clusters: Introduce Azure tests' directly and clearly summarizes the main change: adding Azure integration tests to the trusted-execution-clusters operator configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR introduces only CI/CD infrastructure configuration and execution scripts; no Ginkgo test code or test name declarations are present. Check is not applicable to this type of change.
Test Structure And Quality ✅ Passed PR contains no Ginkgo test code—only CI configuration and bash scripts. The actual tests reside in the trusted-execution-clusters repository, not this PR.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to CI operator configuration files, step registry refs, and shell scripts that do not contain Ginkgo test definitions.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests added. This CI configuration PR configures a bash wrapper to run integration tests via make integration-tests from the trusted-execution-clusters-operator repository.
Topology-Aware Scheduling Compatibility ✅ Passed PR adds CI infrastructure only (build configs, step registry, test scripts). No deployment manifests, operator code, or scheduling constraints present.
Ote Binary Stdout Contract ✅ Passed PR contains only CI/operator configuration (YAML), metadata (JSON), shell script, and OWNERS files—no Go test files or OTE binaries to violate stdout contract.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR adds only CI operator configuration (YAML), bash scripts, and metadata—no Ginkgo e2e test code. Actual test code is in external repository, not in this PR.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 18, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`:
- Around line 31-61: This config is missing the required top-level promotion
section; add a promotion: block alongside releases/tests/build_root/images that
provides the promotion namespace and a tag_specification mapping image stream
tags to the release tags (e.g., a namespace for the release image push and a
tag_specification object that lists the image stream names/tags to promote), so
the ci-operator can promote built images into the release stream; update the
existing config to include this promotion block at top level (referencing
promotion and tag_specification to align with the releases/tests entries).

In
`@ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh`:
- Around line 9-23: Wrap all secret-handling commands (the podman login
invocation, the az login invocation, and the secret reads that set
AZURE_SUBSCRIPTION_ID and TEST_IMAGE) with a saved/restore xtrace guard: capture
current tracing state, disable tracing (set +x) before reading files and
invoking podman/az, then restore the original tracing state afterward; update
the block around the podman login, the AZURE_SUBSCRIPTION_ID/TEST_IMAGE exports
and the az login to use this save/restore pattern so credentials written by
VIRT_PROVIDER/PLATFORM/REGISTRY/TEST_IMAGE/AZURE_SUBSCRIPTION_ID are never
printed when tracing is enabled upstream.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 70a64ce8-0bb8-4e16-a449-f00bf55e1a68

📥 Commits

Reviewing files that changed from the base of the PR and between ce0233c and 71f8210.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (6)
  • ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml
  • ci-operator/step-registry/trusted-execution-clusters/ref/OWNERS
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/OWNERS
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.metadata.json
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.yaml
💤 Files with no reviewable changes (1)
  • ci-operator/step-registry/trusted-execution-clusters/ref/OWNERS

Comment on lines +31 to +61
releases:
latest:
candidate:
architecture: amd64
product: ocp
stream: nightly
version: "4.21"
resources:
'*':
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 200Mi
tests:
- always_run: false
as: integration-test
capabilities:
- nested-podman
optional: true
skip_if_only_changed: ^(\.github|LICENSES|bundle|docs|examples)/|^(README\.md|\.gitignore)$
steps:
cluster_profile: openshift-org-aws
test:
- ref: trusted-execution-clusters-ref-azure-integration-test
workflow: ipi-aws
zz_generated_metadata:
branch: main
org: trusted-execution-clusters
repo: operator
variant: azure

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add the missing promotion section to this ci-operator config.

This config defines build_root, images, tests, and releases, but it omits promotion, which is required for files under ci-operator/config/.

Suggested structure
 releases:
   latest:
     candidate:
       architecture: amd64
       product: ocp
       stream: nightly
       version: "4.21"
+promotion:
+  to:
+  - namespace: trusted-execution-clusters
+    name: operator

As per coding guidelines, "CI configuration files should define build_root, images, tests (referencing step-registry workflows), promotion, and releases sections in ci-operator/config///".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
releases:
latest:
candidate:
architecture: amd64
product: ocp
stream: nightly
version: "4.21"
resources:
'*':
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 200Mi
tests:
- always_run: false
as: integration-test
capabilities:
- nested-podman
optional: true
skip_if_only_changed: ^(\.github|LICENSES|bundle|docs|examples)/|^(README\.md|\.gitignore)$
steps:
cluster_profile: openshift-org-aws
test:
- ref: trusted-execution-clusters-ref-azure-integration-test
workflow: ipi-aws
zz_generated_metadata:
branch: main
org: trusted-execution-clusters
repo: operator
variant: azure
releases:
latest:
candidate:
architecture: amd64
product: ocp
stream: nightly
version: "4.21"
promotion:
to:
- namespace: trusted-execution-clusters
name: operator
resources:
'*':
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 200Mi
tests:
- always_run: false
as: integration-test
capabilities:
- nested-podman
optional: true
skip_if_only_changed: ^(\.github|LICENSES|bundle|docs|examples)/|^(README\.md|\.gitignore)$
steps:
cluster_profile: openshift-org-aws
test:
- ref: trusted-execution-clusters-ref-azure-integration-test
workflow: ipi-aws
zz_generated_metadata:
branch: main
org: trusted-execution-clusters
repo: operator
variant: azure
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`
around lines 31 - 61, This config is missing the required top-level promotion
section; add a promotion: block alongside releases/tests/build_root/images that
provides the promotion namespace and a tag_specification mapping image stream
tags to the release tags (e.g., a namespace for the release image push and a
tag_specification object that lists the image stream names/tags to promote), so
the ci-operator can promote built images into the release stream; update the
existing config to include this promotion block at top level (referencing
promotion and tag_specification to align with the releases/tests entries).

Comment on lines +9 to +23
podman login -u "$(oc whoami)" -p "$(oc whoami -t)" \
image-registry.openshift-image-registry.svc:5000 --tls-verify=false

AZURE_SUBSCRIPTION_ID=$(cat /tmp/secrets/azure/subscription-id)
TEST_IMAGE=$(cat /tmp/secrets/azure/test-image)
export AZURE_SUBSCRIPTION_ID TEST_IMAGE

export VIRT_PROVIDER=azure
export PLATFORM=openshift
export REGISTRY="${REGISTRY}"

az login --service-principal \
-u "$(cat /tmp/secrets/azure/client-id)" \
-p "$(cat /tmp/secrets/azure/client-secret)" \
--tenant "$(cat /tmp/secrets/azure/tenant-id)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Guard secret/token operations by saving/restoring tracing state.

Sensitive values are handled on Lines 9-23, but there is no explicit xtrace guard. Add set +x with state restore around these operations to prevent credential leaks in CI logs when tracing is enabled upstream.

Proposed hardening patch
 echo "[INFO] Logging in to internal registry..."
-podman login -u "$(oc whoami)" -p "$(oc whoami -t)" \
-  image-registry.openshift-image-registry.svc:5000 --tls-verify=false
+restore_xtrace=0
+[[ $- == *x* ]] && restore_xtrace=1 && set +x
+podman login -u "$(oc whoami)" -p "$(oc whoami -t)" \
+  image-registry.openshift-image-registry.svc:5000 --tls-verify=false
+(( restore_xtrace )) && set -x
 
-AZURE_SUBSCRIPTION_ID=$(cat /tmp/secrets/azure/subscription-id)
-TEST_IMAGE=$(cat /tmp/secrets/azure/test-image)
+restore_xtrace=0
+[[ $- == *x* ]] && restore_xtrace=1 && set +x
+AZURE_SUBSCRIPTION_ID=$(cat /tmp/secrets/azure/subscription-id)
+TEST_IMAGE=$(cat /tmp/secrets/azure/test-image)
+(( restore_xtrace )) && set -x
 export AZURE_SUBSCRIPTION_ID TEST_IMAGE
@@
-az login --service-principal \
+restore_xtrace=0
+[[ $- == *x* ]] && restore_xtrace=1 && set +x
+az login --service-principal \
   -u "$(cat /tmp/secrets/azure/client-id)" \
   -p "$(cat /tmp/secrets/azure/client-secret)" \
   --tenant "$(cat /tmp/secrets/azure/tenant-id)"
+(( restore_xtrace )) && set -x

As per coding guidelines, "Use set +x and save/restore tracing state when handling passwords, tokens, or sensitive URLs in step registry scripts to prevent credential leakage in CI logs".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh`
around lines 9 - 23, Wrap all secret-handling commands (the podman login
invocation, the az login invocation, and the secret reads that set
AZURE_SUBSCRIPTION_ID and TEST_IMAGE) with a saved/restore xtrace guard: capture
current tracing state, disable tracing (set +x) before reading files and
invoking podman/az, then restore the original tracing state afterward; update
the block around the podman login, the AZURE_SUBSCRIPTION_ID/TEST_IMAGE exports
and the az login to use this save/restore pattern so credentials written by
VIRT_PROVIDER/PLATFORM/REGISTRY/TEST_IMAGE/AZURE_SUBSCRIPTION_ID are never
printed when tracing is enabled upstream.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/test all

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/retest

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`:
- Around line 11-12: The top-level `images` key is using an invalid object shape
with an `items:` sub-key; change `images:` to be a direct list (array) instead
of `images: items:` so each image entry is a YAML list item (e.g. `-
dockerfile_literal: | ...`, `  from: ...`, `  inputs: ...`, `  to: ...`); remove
the `items:` wrapper and un-indent its entries so the ci-operator can validate
the `images` list properly.
- Around line 51-55: Update the CI job to use Azure-specific settings: change
the cluster_profile value from openshift-org-aws to openshift-org-azure and
change the workflow from ipi-aws to ipi-azure so the test ref
trusted-execution-clusters-ref-azure-integration-test runs with the Azure
credentials and VIRT_PROVIDER=azure as expected.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: bfc57765-2cfa-410c-a385-f5e534190bd3

📥 Commits

Reviewing files that changed from the base of the PR and between 71f8210 and 80e980d.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (6)
  • ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml
  • ci-operator/step-registry/trusted-execution-clusters/ref/OWNERS
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/OWNERS
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.metadata.json
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.yaml
💤 Files with no reviewable changes (1)
  • ci-operator/step-registry/trusted-execution-clusters/ref/OWNERS
✅ Files skipped from review due to trivial changes (1)
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/OWNERS
🚧 Files skipped from review as they are similar to previous changes (3)
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.yaml
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-ref.metadata.json
  • ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh

Comment on lines +51 to +55
steps:
cluster_profile: openshift-org-aws
test:
- ref: trusted-execution-clusters-ref-azure-integration-test
workflow: ipi-aws

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if there are Azure cluster profiles or workflows available
echo "=== Available Azure cluster profiles ==="
fd -t d 'azure' ci-operator/config/jobs --max-depth 3 2>/dev/null || echo "No azure job configs found"

echo -e "\n=== Azure workflows in step-registry ==="
fd -t d 'azure' ci-operator/step-registry --max-depth 4 2>/dev/null | head -20

echo -e "\n=== Existing Azure cluster profiles ==="
ls -la cluster/test-deploy/azure* 2>/dev/null || fd -t d 'azure' cluster/ --max-depth 3 2>/dev/null | head -10

Repository: openshift/release

Length of output: 1266


🏁 Script executed:

# Check the file structure and look for __azure variants
echo "=== File under review ==="
cat ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml

echo -e "\n=== Other __azure variants in same directory ==="
ls -la ci-operator/config/trusted-execution-clusters/operator/ | grep __

Repository: openshift/release

Length of output: 1888


🏁 Script executed:

# Look for the test reference definition
echo "=== Search for the test reference ==="
rg 'trusted-execution-clusters-ref-azure-integration-test' --type yaml -A 5 -B 2

Repository: openshift/release

Length of output: 2949


🏁 Script executed:

# Check for Azure cluster profile definitions
echo "=== Search for Azure cluster profiles ==="
rg 'openshift-org-azure' --type yaml

Repository: openshift/release

Length of output: 50375


🏁 Script executed:

# Look at similar Azure test configurations
echo "=== Search for other Azure integration tests ==="
fd -t f '*.yaml' ci-operator/config | xargs grep -l 'azure.*integration' 2>/dev/null | head -5

Repository: openshift/release

Length of output: 414


🏁 Script executed:

cat ci-operator/step-registry/trusted-execution-clusters/ref/azure-integration-test/trusted-execution-clusters-ref-azure-integration-test-commands.sh

Repository: openshift/release

Length of output: 917


🏁 Script executed:

# Check for similar test configs with cluster/workflow mismatch
rg 'cluster_profile:.*aws' ci-operator/config/trusted-execution-clusters/ -A 3 -B 1

Repository: openshift/release

Length of output: 746


🏁 Script executed:

# Check CI naming convention violations in this directory
ls -la ci-operator/config/trusted-execution-clusters/operator/

Repository: openshift/release

Length of output: 426


Fix cluster profile and workflow to match Azure integration test requirements.

The test trusted-execution-clusters-ref-azure-integration-test explicitly uses Azure credentials (subscription-id, client-id, client-secret, tenant-id) and runs az login with a service principal, setting VIRT_PROVIDER=azure. However, the configuration uses cluster_profile: openshift-org-aws and workflow: ipi-aws. This will cause the test to fail. Change both to use the Azure equivalents: cluster_profile: openshift-org-azure and workflow: ipi-azure.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`
around lines 51 - 55, Update the CI job to use Azure-specific settings: change
the cluster_profile value from openshift-org-aws to openshift-org-azure and
change the workflow from ipi-aws to ipi-azure so the test ref
trusted-execution-clusters-ref-azure-integration-test runs with the Azure
credentials and VIRT_PROVIDER=azure as expected.

@Jakob-Naucke

Jakob-Naucke commented May 18, 2026

Copy link
Copy Markdown
Member Author

removed buggy line in containerfile looks like it had not been updated yet?
/retest
e: one hour later and that didn't seem to trigger anything, so I'll put it in a standalone comment?

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/retest

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

or retest only works on non-draft?

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (3)
ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml (3)

15-16: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Invalid images structure: items: sub-key is still present.

images: must be a direct list per the ci-operator schema, not an object wrapping items:. As-is this will fail config validation.

Proposed fix
 images:
-  items:
-  - dockerfile_literal: |
+- dockerfile_literal: |
     FROM nested-podman

(also un-indent the remaining entries one level)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`
around lines 15 - 16, The ci-operator config uses an incorrect images structure:
the top-level "images" key currently contains an "items:" sub-key; remove the
"items:" wrapper so "images" is a direct list and un-indent the existing image
entries one level. Locate the "images" block (the "images:" key and its child
"items:") and transform it into a plain list under "images" (drop "items:" and
shift all its entries up) so the file conforms to the ci-operator schema.

61-65: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Cluster profile and workflow still target AWS on the Azure variant.

The integration test ref trusted-execution-clusters-ref-azure-integration-test performs az login with Azure SP credentials and sets VIRT_PROVIDER=azure, but cluster_profile and workflow here are AWS. The job will not have an Azure cluster to attest against.

Proposed fix
   steps:
-    cluster_profile: openshift-org-aws
+    cluster_profile: openshift-org-azure
     test:
     - ref: trusted-execution-clusters-ref-azure-integration-test
-    workflow: ipi-aws
+    workflow: ipi-azure
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`
around lines 61 - 65, The CI job for the Azure integration uses the Azure test
ref trusted-execution-clusters-ref-azure-integration-test but still sets AWS
targets; change the cluster_profile and workflow to the Azure equivalents so the
job provisions an Azure cluster (update cluster_profile from openshift-org-aws
to the Azure profile and workflow from ipi-aws to the Azure workflow, e.g.,
cluster_profile: openshift-org-azure and workflow: ipi-azure) to match the test
ref and VIRT_PROVIDER=azure.

40-70: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Top-level promotion: block is still missing.

This ci-operator config builds an image (azure-test-image) but provides no promotion target, so the built image will not be promoted. Add a promotion section consistent with the other variants under ci-operator/config/trusted-execution-clusters/operator/.

Proposed addition
 releases:
   latest:
     candidate:
       architecture: amd64
       product: ocp
       stream: nightly
       version: "4.21"
+promotion:
+  to:
+  - namespace: trusted-execution-clusters
+    name: operator

Confirm the expected promotion namespace/name by checking the sibling (non-__azure) variant in the same directory:

#!/bin/bash
fd -t f . ci-operator/config/trusted-execution-clusters/operator/ -x grep -lH '^promotion:' {} \;
fd -t f . ci-operator/config/trusted-execution-clusters/operator/ -x sed -n '/^promotion:/,/^[^ ]/p' {} \;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`
around lines 40 - 70, Add a top-level promotion: block so the built image
(azure-test-image) is promoted — create a promotion: entry that specifies the
target namespace and name for the image and the tag to promote (match the
release/version semantics used in this file), and populate those values by
copying the promotion namespace/name/tag from the sibling non-__azure variant in
the same directory; ensure the new promotion: key is at top level (alongside
releases/resources/tests) and references the same built image name
(azure-test-image).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In
`@ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml`:
- Around line 15-16: The ci-operator config uses an incorrect images structure:
the top-level "images" key currently contains an "items:" sub-key; remove the
"items:" wrapper so "images" is a direct list and un-indent the existing image
entries one level. Locate the "images" block (the "images:" key and its child
"items:") and transform it into a plain list under "images" (drop "items:" and
shift all its entries up) so the file conforms to the ci-operator schema.
- Around line 61-65: The CI job for the Azure integration uses the Azure test
ref trusted-execution-clusters-ref-azure-integration-test but still sets AWS
targets; change the cluster_profile and workflow to the Azure equivalents so the
job provisions an Azure cluster (update cluster_profile from openshift-org-aws
to the Azure profile and workflow from ipi-aws to the Azure workflow, e.g.,
cluster_profile: openshift-org-azure and workflow: ipi-azure) to match the test
ref and VIRT_PROVIDER=azure.
- Around line 40-70: Add a top-level promotion: block so the built image
(azure-test-image) is promoted — create a promotion: entry that specifies the
target namespace and name for the image and the tag to promote (match the
release/version semantics used in this file), and populate those values by
copying the promotion namespace/name/tag from the sibling non-__azure variant in
the same directory; ensure the new promotion: key is at top level (alongside
releases/resources/tests) and references the same built image name
(azure-test-image).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 5cd285c6-31d0-4a89-ab58-69566b11cdcd

📥 Commits

Reviewing files that changed from the base of the PR and between cce07cb and acff58e.

📒 Files selected for processing (1)
  • ci-operator/config/trusted-execution-clusters/operator/trusted-execution-clusters-operator-main__azure.yaml

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: no rehearsable tests are affected by this change

Use native OpenShift as Trustee platform, attest Azure VMs against
it. Optional test.

Signed-off-by: Jakob Naucke <jnaucke@redhat.com>
Assisted-by: Claude Opus 4.6
@openshift-ci

openshift-ci Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Jakob-Naucke

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot Bot removed the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label Jul 1, 2026
@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Jakob-Naucke commented Jul 2, 2026 via email

Copy link
Copy Markdown
Member Author

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Jakob-Naucke commented Jul 2, 2026 via email

Copy link
Copy Markdown
Member Author

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: your /pj-rehearse request was not processed because the request waited in queue for longer than 5 minutes. Please retry in a few minutes.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

krisnababu pushed a commit to oharan2/release that referenced this pull request Jul 3, 2026
Test relied on moving PR code to another host and running KinD there,
which has been superseded by running on GHA
trusted-execution-clusters/operator#287.

Keeping basic structure for trusted-execution-clusters because we
still intend to utilize OpenShift on openshift#79393.

Signed-off-by: Jakob Naucke <jnaucke@redhat.com>
@Jakob-Naucke

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@Jakob-Naucke: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-trusted-execution-clusters-operator-main-azure-images trusted-execution-clusters/operator presubmit Presubmit changed
pull-ci-trusted-execution-clusters-operator-main-azure-integration-test trusted-execution-clusters/operator presubmit Presubmit changed
pull-ci-trusted-execution-clusters-operator-main-images trusted-execution-clusters/operator presubmit Presubmit changed
Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@Jakob-Naucke

Jakob-Naucke commented Jul 3, 2026 via email

Copy link
Copy Markdown
Member Author

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

no available nodes

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@Jakob-Naucke

Copy link
Copy Markdown
Member Author

improved shutdown logic

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci

openshift-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@Jakob-Naucke: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/rehearse/trusted-execution-clusters/operator/main/azure-integration-test 771e24b link unknown /pj-rehearse pull-ci-trusted-execution-clusters-operator-main-azure-integration-test

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

andrej1991 pushed a commit to andrej1991/release that referenced this pull request Jul 6, 2026
Test relied on moving PR code to another host and running KinD there,
which has been superseded by running on GHA
trusted-execution-clusters/operator#287.

Keeping basic structure for trusted-execution-clusters because we
still intend to utilize OpenShift on openshift#79393.

Signed-off-by: Jakob Naucke <jnaucke@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant