From 3460c4e70e4ec1cc6858e8302fc27e017d757bda Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Wed, 12 Aug 2026 15:39:25 -0500 Subject: [PATCH 1/8] INTEROP-9417: Add acm-tests-clc-smoke step for reduced CLC scope The existing acm-tests-clc-create step already creates only 1 AWS managed cluster (~50 min runtime) but carries a 28800s (8h) timeout and suppresses failures with || :. This new step provides: - Right-sized timeout: 5400s (90 min) vs 28800s - Strict failure propagation: no || : so downstream steps fail fast if cluster creation does not succeed No CUSTOMER_TAGS or CLOUD_PROVIDERS changes needed; the existing test image already scopes to single-cluster creation via TEST_STAGE=OCPInterop-create internally. Update OPP interop configs (ocp4.22, ocp5.0) to use the new step. The acm-tests-clc-destroy post step remains unchanged. --- ...stron-policy-collection-main__ocp4.22.yaml | 2 +- ...ostron-policy-collection-main__ocp5.0.yaml | 2 +- .../step-registry/acm/tests/clc-smoke/OWNERS | 9 +++ .../acm/tests/clc-smoke/README.md | 38 ++++++++++ .../clc-smoke/acm-tests-clc-smoke-commands.sh | 55 +++++++++++++++ .../acm-tests-clc-smoke-ref.metadata.json | 15 ++++ .../clc-smoke/acm-tests-clc-smoke-ref.yaml | 69 +++++++++++++++++++ 7 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 ci-operator/step-registry/acm/tests/clc-smoke/OWNERS create mode 100644 ci-operator/step-registry/acm/tests/clc-smoke/README.md create mode 100755 ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh create mode 100644 ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json create mode 100644 ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml diff --git a/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp4.22.yaml b/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp4.22.yaml index c3a92c8259122..a0e8de8d517ff 100644 --- a/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp4.22.yaml +++ b/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp4.22.yaml @@ -123,7 +123,7 @@ tests: - chain: cucushift-installer-check-cluster-health - ref: stackrox-opp-readiness - ref: stackrox-opp-smoke - - ref: acm-tests-clc-create + - ref: acm-tests-clc-smoke - ref: acm-fetch-managed-clusters - ref: acm-opp-app - ref: interop-opp-odf-health diff --git a/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp5.0.yaml b/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp5.0.yaml index e31b7716529a3..decdf2d896ba8 100644 --- a/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp5.0.yaml +++ b/ci-operator/config/stolostron/policy-collection/stolostron-policy-collection-main__ocp5.0.yaml @@ -104,7 +104,7 @@ tests: - ref: acm-policies-openshift-plus-setup - ref: acm-policies-openshift-plus - chain: cucushift-installer-check-cluster-health - - ref: acm-tests-clc-create + - ref: acm-tests-clc-smoke - ref: acm-fetch-managed-clusters - ref: acm-opp-app - ref: interop-opp-odf-health diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/OWNERS b/ci-operator/step-registry/acm/tests/clc-smoke/OWNERS new file mode 100644 index 0000000000000..76364ea3076e7 --- /dev/null +++ b/ci-operator/step-registry/acm/tests/clc-smoke/OWNERS @@ -0,0 +1,9 @@ +approvers: +- cspi-qe-ocp-lp +- dtthuynh +- vboulos +options: {} +reviewers: +- cspi-qe-ocp-lp +- dtthuynh +- vboulos diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/README.md b/ci-operator/step-registry/acm/tests/clc-smoke/README.md new file mode 100644 index 0000000000000..8819c7ae40c75 --- /dev/null +++ b/ci-operator/step-registry/acm/tests/clc-smoke/README.md @@ -0,0 +1,38 @@ +# acm-tests-clc-smoke-ref + +## Table of Contents +- [Purpose](#purpose) +- [Process](#process) +- [Requirements](#requirements) + - [Infrastructure](#infrastructure) + - [Environment Variables](#environment-variables) + +## Purpose + +Smoke-scoped variant of [acm-tests-clc-create](../clc-create/README.md) with a right-sized timeout and strict failure handling for OPP interop. + +The full `acm-tests-clc-create` step already creates only 1 AWS managed cluster (~50 min actual runtime) but carries a 28800s (8h) timeout and suppresses failures with `|| :`. This step: +- Reduces the timeout to 5400s (90 min), giving ~80% headroom over the observed average. +- Propagates failures so downstream steps (`acm-fetch-managed-clusters`, `acm-opp-app`) fail fast instead of running against a missing cluster. + +> **IMPORTANT** +> You must use the [acm-tests-clc-destroy-ref](../clc-destroy/README.md) as a post step when using this step. If you do not and succeed in running this step then you will leave clusters running on the ACM QE team's cloud. + +## Process + +- Copies secret options file needed for test execution. +- Injects AWS credentials from the cluster profile into options.yaml. +- Sets dynamic variables based on the provisioned hub cluster. +- Runs `execute_clc_interop_commands.sh` which invokes Cypress with tag filter `@create+aws+-sno+-@clusterpool` (controlled by `TEST_STAGE=OCPInterop-create` inside the image). + +## Requirements + +### Infrastructure + +- An existing OpenShift cluster to act as the target Hub. +- "advanced-cluster-management" operator installed (see [`install-operators`](../../../install-operators/README.md)). +- MCH custom resource installed (see [acm-mch step](../mch/README.md)). + +### Environment Variables + +- Please see [acm-tests-clc-smoke-ref.yaml](acm-tests-clc-smoke-ref.yaml) env section. diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh new file mode 100755 index 0000000000000..4e8545e4dfa1e --- /dev/null +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -euxo pipefail; shopt -s inherit_errexit + +typeset secretsDir="/tmp/secrets" +typeset optionFile="./options.yaml" +typeset awsCredFile="${CLUSTER_PROFILE_DIR}/.awscred" + +if [[ "${SKIP_OCP_DEPLOY:-false}" == "true" ]]; then + cp "${secretsDir}/ci/kubeconfig" "${SHARED_DIR}/kubeconfig" + cp "${secretsDir}/ci/kubeadmin-password" "${SHARED_DIR}/kubeadmin-password" +fi + +cp "${secretsDir}/clc-interop/secret-options-yaml" "${optionFile}" + +if [[ -f "${awsCredFile}" ]]; then + typeset awsAccKeyID= + typeset awsAccKeyToken= + + set +x + awsAccKeyID="$(sed -nE 's/^\s*aws_access_key_id\s*=\s*//p;T;q' "${awsCredFile}")" + awsAccKeyToken="$(sed -nE 's/^\s*aws_secret_access_key\s*=\s*//p;T;q' "${awsCredFile}")" + + [ -n "${awsAccKeyID}" ] && [ -n "${awsAccKeyToken}" ] + + yq -o json eval . "${optionFile}" | + jq -c \ + --arg awsAccKeyID "${awsAccKeyID}" \ + --arg awsAccKeyToken "${awsAccKeyToken}" \ + ' + .options.connections.apiKeys.aws|=( + .awsAccessKeyID=$awsAccKeyID | + .awsSecretAccessKeyID=$awsAccKeyToken + ) + ' | + yq -p json -o yaml eval . > "${optionFile}.tmp" + mv -f "${optionFile}.tmp" "${optionFile}" + set -x + + unset awsAccKeyID awsAccKeyToken +fi + +set +x +export CYPRESS_OPTIONS_HUB_PASSWORD= +CYPRESS_OPTIONS_HUB_PASSWORD="$(cat "${SHARED_DIR}/kubeadmin-password")" +set -x + +CYPRESS_BASE_URL="$(oc whoami --show-console)" \ +CYPRESS_HUB_API_URL="$(oc whoami --show-server)" \ +CYPRESS_CLC_OCP_IMAGE_VERSION="$(cat "${secretsDir}/clc/ocp_image_version")" \ +CLOUD_PROVIDERS="$(cat "${secretsDir}/clc/ocp_cloud_providers")" \ +bash +x ./execute_clc_interop_commands.sh + +unset CYPRESS_OPTIONS_HUB_PASSWORD + +cp -r reports "${ARTIFACT_DIR}/" diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json new file mode 100644 index 0000000000000..bfcc856a27d44 --- /dev/null +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json @@ -0,0 +1,15 @@ +{ + "path": "acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml", + "owners": { + "approvers": [ + "cspi-qe-ocp-lp", + "dtthuynh", + "vboulos" + ], + "reviewers": [ + "cspi-qe-ocp-lp", + "dtthuynh", + "vboulos" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml new file mode 100644 index 0000000000000..d4a67209bffb3 --- /dev/null +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml @@ -0,0 +1,69 @@ +ref: + as: acm-tests-clc-smoke + from: clc-ui-e2e + commands: acm-tests-clc-smoke-commands.sh + timeout: 5400s + resources: + requests: + cpu: '2' + memory: 6Gi + credentials: + - namespace: test-credentials + name: opp-acm-clc-credentials + mount_path: /tmp/secrets/clc-interop + - namespace: test-credentials + name: acm-clc-credentials + mount_path: /tmp/secrets/clc + - namespace: test-credentials + name: acm-ci-credentials + mount_path: /tmp/secrets/ci + env: + - name: CYPRESS_OC_IDP + default: "kube:admin" + documentation: |- + Identity + - name: CYPRESS_OPTIONS_HUB_USER + default: "kubeadmin" + documentation: |- + Hub cluster username + - name: CYPRESS_SPOKE_CLUSTER + default: "" + documentation: |- + Identify spoke clusters + - name: BROWSER + default: "chrome" + documentation: |- + Set browser for cypress + - name: CUSTOMER_TAGS + default: "" + documentation: |- + Cypress grep tag filter (passed through to test execution) + - name: CYPRESS_CLC_OC_IDP + default: "clc-e2e-htpasswd" + documentation: |- + Serves tests RBAC settings + - name: CYPRESS_CLC_RBAC_PASS + default: "test-RBAC-4-e2e" + documentation: |- + Serves tests RBAC settings + - name: CYPRESS_CLC_OCP_IMAGE_REGISTRY + default: "quay.io/openshift-release-dev/ocp-release" + documentation: |- + Image registry + - name: CYPRESS_ACM_NAMESPACE + default: "ocm" + documentation: |- + Acm namespace + - name: CYPRESS_MCE_NAMESPACE + default: "multicluster-engine" + documentation: |- + Mce namespace + - name: IMPORT_KUBERNETES_CLUSTERS + default: "" + documentation: |- + Comma separated list of imports + documentation: |- + Smoke-scoped ACM cluster lifecycle step that creates a single managed + cluster on AWS (~50 min). Differs from acm-tests-clc-create only in + timeout (5400s vs 28800s) and failure propagation (no || :) so that + downstream steps fail fast if cluster creation does not succeed. From 333b641ccf4e502902ae1fc0ea30ceb5c8061596 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Thu, 13 Aug 2026 11:30:45 -0500 Subject: [PATCH 2/8] fixup: harden xtrace and report collection - Keep tracing disabled through cluster endpoint assignments to prevent logging CYPRESS_BASE_URL and CYPRESS_HUB_API_URL in CI output - Capture test exit status so reports are always copied to ARTIFACT_DIR before propagating the failure - Add trailing newline to metadata.json --- .../acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh | 7 +++++-- .../tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh index 4e8545e4dfa1e..032694d56cb21 100755 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh @@ -42,14 +42,17 @@ fi set +x export CYPRESS_OPTIONS_HUB_PASSWORD= CYPRESS_OPTIONS_HUB_PASSWORD="$(cat "${SHARED_DIR}/kubeadmin-password")" -set -x + +typeset clcStatus=0 CYPRESS_BASE_URL="$(oc whoami --show-console)" \ CYPRESS_HUB_API_URL="$(oc whoami --show-server)" \ CYPRESS_CLC_OCP_IMAGE_VERSION="$(cat "${secretsDir}/clc/ocp_image_version")" \ CLOUD_PROVIDERS="$(cat "${secretsDir}/clc/ocp_cloud_providers")" \ -bash +x ./execute_clc_interop_commands.sh +bash +x ./execute_clc_interop_commands.sh || clcStatus=$? +set -x unset CYPRESS_OPTIONS_HUB_PASSWORD cp -r reports "${ARTIFACT_DIR}/" +exit "${clcStatus}" diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json index bfcc856a27d44..aff5d0a60d630 100644 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json @@ -12,4 +12,4 @@ "vboulos" ] } -} \ No newline at end of file +} From d41bafa9d32129bfcef15b505aff5864a869e468 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Thu, 13 Aug 2026 11:32:48 -0500 Subject: [PATCH 3/8] fixup: mpitt hardening (credential validation + secret handling) - Replace silent [ -n ] && [ -n ] with explicit error message on credential extraction failure for faster CI triage - Use jq --rawfile for AWS secret key to keep it off the process command line (awsAccKeyID kept as --arg since semi-public) --- .../acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh index 032694d56cb21..83661193bf2ac 100755 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh @@ -20,16 +20,19 @@ if [[ -f "${awsCredFile}" ]]; then awsAccKeyID="$(sed -nE 's/^\s*aws_access_key_id\s*=\s*//p;T;q' "${awsCredFile}")" awsAccKeyToken="$(sed -nE 's/^\s*aws_secret_access_key\s*=\s*//p;T;q' "${awsCredFile}")" - [ -n "${awsAccKeyID}" ] && [ -n "${awsAccKeyToken}" ] + if [[ -z "${awsAccKeyID}" ]] || [[ -z "${awsAccKeyToken}" ]]; then + echo "ERROR: Failed to extract AWS credentials from ${awsCredFile}" 1>&2 + exit 1 + fi yq -o json eval . "${optionFile}" | jq -c \ --arg awsAccKeyID "${awsAccKeyID}" \ - --arg awsAccKeyToken "${awsAccKeyToken}" \ + --rawfile awsAccKeyToken <(printf '%s' "${awsAccKeyToken}") \ ' .options.connections.apiKeys.aws|=( .awsAccessKeyID=$awsAccKeyID | - .awsSecretAccessKeyID=$awsAccKeyToken + .awsSecretAccessKeyID=($awsAccKeyToken | rtrimstr("\n")) ) ' | yq -p json -o yaml eval . > "${optionFile}.tmp" From e48ff5cdba2839574d5342e5b13643fcabf948f2 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Thu, 13 Aug 2026 11:40:59 -0500 Subject: [PATCH 4/8] fixup: regenerate metadata and add SKIP_OCP_DEPLOY env var - Revert trailing newline in metadata.json (auto-generated file must match generator output exactly) - Declare SKIP_OCP_DEPLOY in YAML env section for discoverability - Regenerate metadata via make registry-metadata --- .../acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json | 2 +- .../acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json index aff5d0a60d630..bfcc856a27d44 100644 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.metadata.json @@ -12,4 +12,4 @@ "vboulos" ] } -} +} \ No newline at end of file diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml index d4a67209bffb3..d5f301b1be8c2 100644 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml @@ -62,6 +62,10 @@ ref: default: "" documentation: |- Comma separated list of imports + - name: SKIP_OCP_DEPLOY + default: "false" + documentation: |- + When true, copies kubeconfig from CI secrets instead of using cluster profile documentation: |- Smoke-scoped ACM cluster lifecycle step that creates a single managed cluster on AWS (~50 min). Differs from acm-tests-clc-create only in From e2cdf7bc317a302f0db43fbf7f4b337188412102 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Fri, 21 Aug 2026 10:45:18 -0500 Subject: [PATCH 5/8] fix: add best_effort to acm-tests-clc-smoke CLC failures should not block independent downstream validations (ODF health, Quay smoke, observability). --- .../acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml index d5f301b1be8c2..775b3cda884ae 100644 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-ref.yaml @@ -3,6 +3,7 @@ ref: from: clc-ui-e2e commands: acm-tests-clc-smoke-commands.sh timeout: 5400s + best_effort: true resources: requests: cpu: '2' @@ -68,6 +69,6 @@ ref: When true, copies kubeconfig from CI secrets instead of using cluster profile documentation: |- Smoke-scoped ACM cluster lifecycle step that creates a single managed - cluster on AWS (~50 min). Differs from acm-tests-clc-create only in - timeout (5400s vs 28800s) and failure propagation (no || :) so that - downstream steps fail fast if cluster creation does not succeed. + cluster on AWS (~50 min). Runs with best_effort so that CLC failures + do not block independent downstream validations (ODF health, Quay smoke, + observability). JUnit results are still reported for failure visibility. From 717f7ef4d9c653865ad11c868d47db4f832ec1ac Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Fri, 21 Aug 2026 13:50:54 -0500 Subject: [PATCH 6/8] fix: add best_effort to stackrox-opp-smoke --- .../step-registry/stackrox/opp-smoke/stackrox-opp-smoke-ref.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci-operator/step-registry/stackrox/opp-smoke/stackrox-opp-smoke-ref.yaml b/ci-operator/step-registry/stackrox/opp-smoke/stackrox-opp-smoke-ref.yaml index 74d11f0815aa9..329a34c9d7a71 100644 --- a/ci-operator/step-registry/stackrox/opp-smoke/stackrox-opp-smoke-ref.yaml +++ b/ci-operator/step-registry/stackrox/opp-smoke/stackrox-opp-smoke-ref.yaml @@ -11,6 +11,7 @@ ref: memory: 4Gi from: acs-smoke-runner timeout: 1h0m0s + best_effort: true documentation: |- Run the ACS qa-tests-backend SMOKE suite against a live ACS instance. Reads connection credentials from SHARED_DIR From 57a8d3719d4520e60457a4969217dee4ca145c40 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Sun, 23 Aug 2026 18:08:45 -0500 Subject: [PATCH 7/8] fix: address review findings in clc-smoke - Document set +x scope for credential handling - Correct README best_effort behavior description --- ci-operator/step-registry/acm/tests/clc-smoke/README.md | 2 +- .../acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/README.md b/ci-operator/step-registry/acm/tests/clc-smoke/README.md index 8819c7ae40c75..192fbd4eecca1 100644 --- a/ci-operator/step-registry/acm/tests/clc-smoke/README.md +++ b/ci-operator/step-registry/acm/tests/clc-smoke/README.md @@ -13,7 +13,7 @@ Smoke-scoped variant of [acm-tests-clc-create](../clc-create/README.md) with a r The full `acm-tests-clc-create` step already creates only 1 AWS managed cluster (~50 min actual runtime) but carries a 28800s (8h) timeout and suppresses failures with `|| :`. This step: - Reduces the timeout to 5400s (90 min), giving ~80% headroom over the observed average. -- Propagates failures so downstream steps (`acm-fetch-managed-clusters`, `acm-opp-app`) fail fast instead of running against a missing cluster. +- Runs with `best_effort: true` so independent downstream validations (ODF health, Quay smoke, observability) continue regardless of CLC outcome. The script still exits with the CLC status code for JUnit reporting and failure visibility. > **IMPORTANT** > You must use the [acm-tests-clc-destroy-ref](../clc-destroy/README.md) as a post step when using this step. If you do not and succeed in running this step then you will leave clusters running on the ACM QE team's cloud. diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh index 83661193bf2ac..be07a302aa3ea 100755 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh @@ -16,6 +16,7 @@ if [[ -f "${awsCredFile}" ]]; then typeset awsAccKeyID= typeset awsAccKeyToken= + # tracing off: AWS credentials set +x awsAccKeyID="$(sed -nE 's/^\s*aws_access_key_id\s*=\s*//p;T;q' "${awsCredFile}")" awsAccKeyToken="$(sed -nE 's/^\s*aws_secret_access_key\s*=\s*//p;T;q' "${awsCredFile}")" @@ -42,6 +43,7 @@ if [[ -f "${awsCredFile}" ]]; then unset awsAccKeyID awsAccKeyToken fi +# tracing off: kubeadmin password set +x export CYPRESS_OPTIONS_HUB_PASSWORD= CYPRESS_OPTIONS_HUB_PASSWORD="$(cat "${SHARED_DIR}/kubeadmin-password")" From ffb7bdf4a6c21ccd969ea82622c9b7ca33adb080 Mon Sep 17 00:00:00 2001 From: Michael Pruitt Date: Sun, 23 Aug 2026 18:13:29 -0500 Subject: [PATCH 8/8] fix: address remaining review findings in clc-smoke --- .../clc-smoke/acm-tests-clc-smoke-commands.sh | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh index be07a302aa3ea..90a03212f85a3 100755 --- a/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh +++ b/ci-operator/step-registry/acm/tests/clc-smoke/acm-tests-clc-smoke-commands.sh @@ -48,16 +48,31 @@ set +x export CYPRESS_OPTIONS_HUB_PASSWORD= CYPRESS_OPTIONS_HUB_PASSWORD="$(cat "${SHARED_DIR}/kubeadmin-password")" +typeset cypress_base_url cypress_hub_api_url cypress_ocp_version cloud_providers +cypress_base_url="$(oc whoami --show-console)" +cypress_hub_api_url="$(oc whoami --show-server)" +cypress_ocp_version="$(cat "${secretsDir}/clc/ocp_image_version")" +cloud_providers="$(cat "${secretsDir}/clc/ocp_cloud_providers")" + +if [[ -z "${cypress_base_url}" ]] || [[ -z "${cypress_hub_api_url}" ]]; then + echo "ERROR: Console URL or API URL is empty; oc whoami returned no usable value" 1>&2 + exit 1 +fi + typeset clcStatus=0 -CYPRESS_BASE_URL="$(oc whoami --show-console)" \ -CYPRESS_HUB_API_URL="$(oc whoami --show-server)" \ -CYPRESS_CLC_OCP_IMAGE_VERSION="$(cat "${secretsDir}/clc/ocp_image_version")" \ -CLOUD_PROVIDERS="$(cat "${secretsDir}/clc/ocp_cloud_providers")" \ +CYPRESS_BASE_URL="${cypress_base_url}" \ +CYPRESS_HUB_API_URL="${cypress_hub_api_url}" \ +CYPRESS_CLC_OCP_IMAGE_VERSION="${cypress_ocp_version}" \ +CLOUD_PROVIDERS="${cloud_providers}" \ bash +x ./execute_clc_interop_commands.sh || clcStatus=$? set -x unset CYPRESS_OPTIONS_HUB_PASSWORD -cp -r reports "${ARTIFACT_DIR}/" -exit "${clcStatus}" +typeset reportStatus=0 +cp -r reports "${ARTIFACT_DIR}/" || reportStatus=$? +if (( clcStatus != 0 )); then + exit "${clcStatus}" +fi +exit "${reportStatus}"