diff --git a/ci-operator/config/openshift/hypershift/openshift-hypershift-main.yaml b/ci-operator/config/openshift/hypershift/openshift-hypershift-main.yaml index b5eda614c200c..6e3f3a73c3617 100644 --- a/ci-operator/config/openshift/hypershift/openshift-hypershift-main.yaml +++ b/ci-operator/config/openshift/hypershift/openshift-hypershift-main.yaml @@ -240,11 +240,13 @@ tests: - ref: hypershift-analyze-e2e-failure - chain: hypershift-destroy-nested-management-cluster workflow: hypershift-azure-e2e-self-managed -- always_run: true +- always_run: false as: e2e-azure-v2-self-managed optional: true steps: cluster_profile: hypershift-azure + dependencies: + OCP_IMAGE_N1: release:n1minor env: ENABLE_HYPERSHIFT_CERT_ROTATION_SCALE: "true" HYPERSHIFT_AZURE_LOCATION: centralus diff --git a/ci-operator/jobs/openshift/hypershift/openshift-hypershift-main-presubmits.yaml b/ci-operator/jobs/openshift/hypershift/openshift-hypershift-main-presubmits.yaml index c321d66a8d6e2..efc82a36049b6 100644 --- a/ci-operator/jobs/openshift/hypershift/openshift-hypershift-main-presubmits.yaml +++ b/ci-operator/jobs/openshift/hypershift/openshift-hypershift-main-presubmits.yaml @@ -1576,7 +1576,7 @@ presubmits: secretName: result-aggregator trigger: (?m)^/test( | .* )e2e-azure-self-managed,?($|\s.*) - agent: kubernetes - always_run: true + always_run: false branches: - ^main$ - ^main- diff --git a/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-commands.sh b/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-commands.sh index fe16263aaeede..974487d10fc0f 100644 --- a/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-commands.sh +++ b/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-commands.sh @@ -4,240 +4,6 @@ set -exuo pipefail # Use the nested management cluster kubeconfig export KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" +export HYPERSHIFT_BINARY="${HYPERSHIFT_BINARY:-/hypershift/bin/hypershift}" -# Generate unique cluster names from job ID -PUBLIC_NAME="$(echo -n "${PROW_JOB_ID}-pub"|sha256sum|cut -c-20)" -PRIVATE_NAME="$(echo -n "${PROW_JOB_ID}-prv"|sha256sum|cut -c-20)" -OAUTH_LB_NAME="$(echo -n "${PROW_JOB_ID}-oau"|sha256sum|cut -c-20)" - -# Self-managed Azure credentials -AZURE_CREDS="/etc/hypershift-ci-jobs-self-managed-azure/credentials.json" -AZURE_OIDC_ISSUER_URL="https://smazure.blob.core.windows.net/smazure" -AZURE_SA_TOKEN_ISSUER_KEY_PATH="/etc/hypershift-ci-jobs-self-managed-azure-e2e/serviceaccount-signer.private" -AZURE_WORKLOAD_IDENTITIES_FILE="/etc/hypershift-ci-jobs-self-managed-azure-e2e/workload-identities.json" - -PULL_SECRET_PATH="/etc/ci-pull-credentials/.dockerconfigjson" - -RELEASE_IMAGE="${RELEASE_IMAGE_LATEST}" -HC_LOCATION="${HYPERSHIFT_AZURE_LOCATION:-centralus}" - -# Read private NAT subnet ID from SHARED_DIR (written by setup-private-link step) -if [[ ! -s "${SHARED_DIR}/azure_private_nat_subnet_id" ]]; then - echo "$(date) ERROR: azure_private_nat_subnet_id is required for the private guest cluster" - exit 1 -fi -AZURE_PRIVATE_NAT_SUBNET_ID="$(cat "${SHARED_DIR}/azure_private_nat_subnet_id")" - -# External DNS domain flag (required for correct service publishing strategy, -# especially for Private topology clusters where the API server must use Route) -EXTERNAL_DNS_ARGS="" -if [[ -n "${HYPERSHIFT_EXTERNAL_DNS_DOMAIN:-}" ]]; then - EXTERNAL_DNS_ARGS="--external-dns-domain=${HYPERSHIFT_EXTERNAL_DNS_DOMAIN}" -fi - -# Marketplace image flags -ETCD_STORAGE_CLASS_ARGS="" -if [[ -n "${HYPERSHIFT_ETCD_STORAGE_CLASS:-}" ]]; then - ETCD_STORAGE_CLASS_ARGS="--etcd-storage-class=${HYPERSHIFT_ETCD_STORAGE_CLASS}" -fi - -MARKETPLACE_ARGS="" -if [[ -n "${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_PUBLISHER:-}" ]]; then - MARKETPLACE_ARGS="--marketplace-publisher=${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_PUBLISHER} --marketplace-offer=${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_OFFER}" - if [[ -n "${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_SKU:-}" ]]; then - MARKETPLACE_ARGS="${MARKETPLACE_ARGS} --marketplace-sku=${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_SKU}" - elif [[ -f "${SHARED_DIR}/azure-marketplace-image-sku" ]]; then - MARKETPLACE_ARGS="${MARKETPLACE_ARGS} --marketplace-sku=$(cat "${SHARED_DIR}/azure-marketplace-image-sku")" - fi - if [[ -n "${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_VERSION:-}" ]]; then - MARKETPLACE_ARGS="${MARKETPLACE_ARGS} --marketplace-version=${HYPERSHIFT_AZURE_MARKETPLACE_IMAGE_VERSION}" - elif [[ -f "${SHARED_DIR}/azure-marketplace-image-version" ]]; then - MARKETPLACE_ARGS="${MARKETPLACE_ARGS} --marketplace-version=$(cat "${SHARED_DIR}/azure-marketplace-image-version")" - fi -fi - -# Common flags for all self-managed clusters -COMMON_FLAGS="--node-pool-replicas=${HYPERSHIFT_NODE_COUNT} \ - --base-domain=${HYPERSHIFT_BASE_DOMAIN} \ - --pull-secret=${PULL_SECRET_PATH} \ - --azure-creds=${AZURE_CREDS} \ - --location=${HC_LOCATION} \ - --release-image=${RELEASE_IMAGE} \ - --oidc-issuer-url=${AZURE_OIDC_ISSUER_URL} \ - --sa-token-issuer-private-key-path=${AZURE_SA_TOKEN_ISSUER_KEY_PATH} \ - --workload-identities-file=${AZURE_WORKLOAD_IDENTITIES_FILE} \ - --assign-service-principal-roles \ - --dns-zone-rg-name=os4-common \ - --generate-ssh \ - ${EXTERNAL_DNS_ARGS} \ - ${MARKETPLACE_ARGS} \ - ${ETCD_STORAGE_CLASS_ARGS}" - -# Create public cluster -echo "$(date) Creating public self-managed cluster: ${PUBLIC_NAME}" -/usr/bin/hypershift create cluster azure \ - --name="${PUBLIC_NAME}" \ - ${COMMON_FLAGS} & -PUBLIC_PID=$! - -# Create private cluster -PRIVATE_EXTRA="--endpoint-access-private-nat-subnet-id=${AZURE_PRIVATE_NAT_SUBNET_ID}" -echo "$(date) Creating private self-managed cluster: ${PRIVATE_NAME}" -/usr/bin/hypershift create cluster azure \ - --name="${PRIVATE_NAME}" \ - --endpoint-access=Private \ - ${COMMON_FLAGS} \ - ${PRIVATE_EXTRA} & -PRIVATE_PID=$! - -# Create OAuth LoadBalancer cluster -echo "$(date) Creating OAuth LB self-managed cluster: ${OAUTH_LB_NAME}" -/usr/bin/hypershift create cluster azure \ - --name="${OAUTH_LB_NAME}" \ - --oauth-publishing-strategy=LoadBalancer \ - ${COMMON_FLAGS} & -OAUTH_LB_PID=$! - -# Wait for create commands to complete -echo "$(date) Waiting for cluster create commands to finish..." -FAILED=0 -wait ${PUBLIC_PID} || FAILED=1 -echo "$(date) Public cluster create command completed" -wait ${PRIVATE_PID} || FAILED=1 -echo "$(date) Private cluster create command completed" -wait ${OAUTH_LB_PID} || FAILED=1 -echo "$(date) OAuth LB cluster create command completed" -if [[ ${FAILED} -ne 0 ]]; then - echo "$(date) ERROR: One or more cluster create commands failed" - exit 1 -fi - -# Patch the public cluster to set OperatorConfiguration for Ingress Operator. -# The v2 e2e test ValidateIngressOperatorConfiguration expects this to be set on -# public clusters (mirroring the BeforeApply hook used in the v1 CreateCluster test). -echo "$(date) Patching public cluster ${PUBLIC_NAME} with OperatorConfiguration..." -oc patch hostedcluster "${PUBLIC_NAME}" -n clusters --type=merge -p ' -{ - "spec": { - "operatorConfiguration": { - "ingressOperator": { - "endpointPublishingStrategy": { - "type": "LoadBalancerService", - "loadBalancer": { - "scope": "Internal" - } - } - } - } - } -}' -echo "$(date) Public cluster ${PUBLIC_NAME} patched with OperatorConfiguration" - -# Wait for clusters to become available -echo "$(date) Waiting for public cluster to become available..." -oc wait --timeout=30m --for=condition=Available --namespace=clusters "hostedcluster/${PUBLIC_NAME}" -echo "$(date) Public cluster is available" - -echo "$(date) Waiting for private cluster to become available..." -oc wait --timeout=30m --for=condition=Available --namespace=clusters "hostedcluster/${PRIVATE_NAME}" -echo "$(date) Private cluster is available" - -echo "$(date) Waiting for OAuth LB cluster to become available..." -oc wait --timeout=30m --for=condition=Available --namespace=clusters "hostedcluster/${OAUTH_LB_NAME}" -echo "$(date) OAuth LB cluster is available" - -# Wait for version rollout to complete on all clusters in parallel (via management API, same as AWS/GCP v2) -echo "$(date) Starting parallel version rollout checks..." -set +e - -echo "$(date) Waiting for version rollout on ${PUBLIC_NAME}..." -CLUSTER_CHECK="${PUBLIC_NAME}" timeout 45m bash -c ' - until [[ "$(oc get -n clusters hostedcluster/${CLUSTER_CHECK} -o jsonpath='"'"'{.status.version.history[?(@.state!="")].state}'"'"')" = "Completed" ]]; do - sleep 15 - done -' & -ROLLOUT_PID_PUB=$! - -echo "$(date) Waiting for version rollout on ${PRIVATE_NAME}..." -CLUSTER_CHECK="${PRIVATE_NAME}" timeout 45m bash -c ' - until [[ "$(oc get -n clusters hostedcluster/${CLUSTER_CHECK} -o jsonpath='"'"'{.status.version.history[?(@.state!="")].state}'"'"')" = "Completed" ]]; do - sleep 15 - done -' & -ROLLOUT_PID_PRV=$! - -echo "$(date) Waiting for version rollout on ${OAUTH_LB_NAME}..." -CLUSTER_CHECK="${OAUTH_LB_NAME}" timeout 45m bash -c ' - until [[ "$(oc get -n clusters hostedcluster/${CLUSTER_CHECK} -o jsonpath='"'"'{.status.version.history[?(@.state!="")].state}'"'"')" = "Completed" ]]; do - sleep 15 - done -' & -ROLLOUT_PID_OAU=$! - -echo "$(date) Waiting for all version rollout checks to complete..." -FAILED_READY=0 -for CLUSTER_PID in "${PUBLIC_NAME}:${ROLLOUT_PID_PUB}" "${PRIVATE_NAME}:${ROLLOUT_PID_PRV}" "${OAUTH_LB_NAME}:${ROLLOUT_PID_OAU}"; do - CLUSTER="${CLUSTER_PID%%:*}" - PID="${CLUSTER_PID##*:}" - wait ${PID} - ROLLOUT_RC=$? - if [[ ${ROLLOUT_RC} -ne 0 ]]; then - echo "$(date) ERROR: version rollout timed out for ${CLUSTER}" - echo "--- Diagnostic dump for ${CLUSTER} ---" - echo "HostedCluster conditions:" - oc get -n clusters hostedcluster/${CLUSTER} -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}' || true - echo "" - echo "NodePool status:" - oc get -n clusters nodepool/${CLUSTER} -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}' || true - echo "" - echo "Machines in clusters-${CLUSTER}:" - oc get machines.cluster.x-k8s.io -n "clusters-${CLUSTER}" -o wide 2>/dev/null || true - echo "" - echo "AzureMachines in clusters-${CLUSTER}:" - oc get azuremachines.infrastructure.cluster.x-k8s.io -n "clusters-${CLUSTER}" -o wide 2>/dev/null || true - echo "" - echo "Pods not ready in clusters-${CLUSTER}:" - oc get pods -n "clusters-${CLUSTER}" --field-selector=status.phase!=Running,status.phase!=Succeeded 2>/dev/null || true - echo "--- End diagnostic dump ---" - cat << EOF > "${ARTIFACT_DIR}/junit_hosted_cluster_${CLUSTER}.xml" - - - - - - - - -EOF - FAILED_READY=1 - else - echo "$(date) Version rollout completed for ${CLUSTER}" - cat << EOF > "${ARTIFACT_DIR}/junit_hosted_cluster_${CLUSTER}.xml" - - - - - - - - -EOF - fi -done -set -e -if [[ ${FAILED_READY} -ne 0 ]]; then - exit 1 -fi - -# Write cluster names to shared dir -echo "${PUBLIC_NAME}" > "${SHARED_DIR}/cluster-name-public" -echo "${PRIVATE_NAME}" > "${SHARED_DIR}/cluster-name-private" -echo "${OAUTH_LB_NAME}" > "${SHARED_DIR}/cluster-name-oauth-lb" - -echo "$(date) All self-managed guest clusters are ready" +/hypershift/bin/create-guests diff --git a/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-ref.yaml b/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-ref.yaml index c5dc785ee1951..d7e665080d3bf 100644 --- a/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-ref.yaml +++ b/ci-operator/step-registry/hypershift/azure/create-selfmanaged-guests/hypershift-azure-create-selfmanaged-guests-ref.yaml @@ -15,6 +15,8 @@ ref: dependencies: - name: "release:latest" env: RELEASE_IMAGE_LATEST + - name: "release:n1minor" + env: OCP_IMAGE_N1 env: - name: HYPERSHIFT_NODE_COUNT default: "3" @@ -43,7 +45,10 @@ ref: - name: HYPERSHIFT_ETCD_STORAGE_CLASS default: "" documentation: "The persistent volume storage class for etcd data volumes." - from: hypershift-operator + - name: HYPERSHIFT_PLATFORM + default: "" + documentation: "The cloud platform for the self-managed clusters (e.g. azure). Set in the workflow env block." + from: hypershift-tests grace_period: 5m0s resources: requests: diff --git a/ci-operator/step-registry/hypershift/azure/destroy-selfmanaged-guests/hypershift-azure-destroy-selfmanaged-guests-chain.yaml b/ci-operator/step-registry/hypershift/azure/destroy-selfmanaged-guests/hypershift-azure-destroy-selfmanaged-guests-chain.yaml index 041eef88b9a10..635880f8dd419 100644 --- a/ci-operator/step-registry/hypershift/azure/destroy-selfmanaged-guests/hypershift-azure-destroy-selfmanaged-guests-chain.yaml +++ b/ci-operator/step-registry/hypershift/azure/destroy-selfmanaged-guests/hypershift-azure-destroy-selfmanaged-guests-chain.yaml @@ -8,37 +8,15 @@ chain: - name: HYPERSHIFT_AZURE_LOCATION default: "centralus" documentation: "Specifies the Azure location of the clusters." + - name: HYPERSHIFT_PLATFORM + default: "" + documentation: "The cloud platform for the self-managed clusters (e.g. azure). Set in the workflow env block." commands: |- set -xuo pipefail - - # Use the nested management cluster kubeconfig export KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" - - AZURE_CREDS="/etc/hypershift-ci-jobs-self-managed-azure/credentials.json" - HC_LOCATION="${HYPERSHIFT_AZURE_LOCATION:-centralus}" - - # Re-derive cluster names from job ID (same logic as create step) - PUBLIC_NAME="$(echo -n "${PROW_JOB_ID}-pub"|sha256sum|cut -c-20)" - PRIVATE_NAME="$(echo -n "${PROW_JOB_ID}-prv"|sha256sum|cut -c-20)" - OAUTH_LB_NAME="$(echo -n "${PROW_JOB_ID}-oau"|sha256sum|cut -c-20)" - - # Destroy all clusters, continue per-cluster, but preserve failure signal - FAILED=0 - for CLUSTER in "${PUBLIC_NAME}" "${PRIVATE_NAME}" "${OAUTH_LB_NAME}"; do - echo "$(date) Destroying self-managed cluster: ${CLUSTER}" - if ! /usr/bin/hypershift destroy cluster azure \ - --azure-creds="${AZURE_CREDS}" \ - --name="${CLUSTER}" \ - --location="${HC_LOCATION}" \ - --dns-zone-rg-name=os4-common \ - --cluster-grace-period=40m; then - echo "$(date) WARNING: Failed to destroy cluster ${CLUSTER}" >&2 - FAILED=1 - fi - echo "$(date) Finished destroying cluster ${CLUSTER}" - done - exit "${FAILED}" - from: hypershift-operator + export HYPERSHIFT_BINARY="${HYPERSHIFT_BINARY:-/hypershift/bin/hypershift}" + /hypershift/bin/destroy-guests + from: hypershift-tests grace_period: 5m0s resources: requests: diff --git a/ci-operator/step-registry/hypershift/azure/dump-selfmanaged-guests/hypershift-azure-dump-selfmanaged-guests-chain.yaml b/ci-operator/step-registry/hypershift/azure/dump-selfmanaged-guests/hypershift-azure-dump-selfmanaged-guests-chain.yaml index 2c0b3ade66424..d8322e2c54cb1 100644 --- a/ci-operator/step-registry/hypershift/azure/dump-selfmanaged-guests/hypershift-azure-dump-selfmanaged-guests-chain.yaml +++ b/ci-operator/step-registry/hypershift/azure/dump-selfmanaged-guests/hypershift-azure-dump-selfmanaged-guests-chain.yaml @@ -3,31 +3,20 @@ chain: steps: - as: dump cli: latest + env: + - name: HYPERSHIFT_PLATFORM + default: "" + documentation: "The cloud platform for the self-managed clusters (e.g. azure). Set in the workflow env block." commands: |- set -xuo pipefail - - # Use the nested management cluster kubeconfig export KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" - - if [ -f "${SHARED_DIR}/proxy-conf.sh" ] ; then + if [ -f "${SHARED_DIR}/proxy-conf.sh" ]; then + set +x source "${SHARED_DIR}/proxy-conf.sh" + set -x fi - - # Re-derive cluster names from job ID (same logic as create/destroy steps) - PUBLIC_NAME="$(echo -n "${PROW_JOB_ID}-pub"|sha256sum|cut -c-20)" - PRIVATE_NAME="$(echo -n "${PROW_JOB_ID}-prv"|sha256sum|cut -c-20)" - OAUTH_LB_NAME="$(echo -n "${PROW_JOB_ID}-oau"|sha256sum|cut -c-20)" - - for CLUSTER in "${PUBLIC_NAME}" "${PRIVATE_NAME}" "${OAUTH_LB_NAME}"; do - echo "$(date) Dumping self-managed guest cluster: ${CLUSTER}" - DUMP_DIR="${ARTIFACT_DIR}/${CLUSTER}" - mkdir -p "${DUMP_DIR}" - bin/hypershift dump cluster \ - --artifact-dir="${DUMP_DIR}" \ - --dump-guest-cluster=true \ - --name="${CLUSTER}" || echo "$(date) WARNING: Failed to dump cluster ${CLUSTER}" - done - from: hypershift-operator + /hypershift/bin/dump-guests --hypershift-binary=/hypershift/bin/hypershift + from: hypershift-tests resources: requests: cpu: 100m diff --git a/ci-operator/step-registry/hypershift/azure/e2e/v2-self-managed/hypershift-azure-e2e-v2-self-managed-workflow.yaml b/ci-operator/step-registry/hypershift/azure/e2e/v2-self-managed/hypershift-azure-e2e-v2-self-managed-workflow.yaml index f7c41ce18fc9a..8fc3b3d822ec3 100644 --- a/ci-operator/step-registry/hypershift/azure/e2e/v2-self-managed/hypershift-azure-e2e-v2-self-managed-workflow.yaml +++ b/ci-operator/step-registry/hypershift/azure/e2e/v2-self-managed/hypershift-azure-e2e-v2-self-managed-workflow.yaml @@ -33,6 +33,7 @@ workflow: - chain: hypershift-destroy-nested-management-cluster env: CLOUD_PROVIDER: "Azure" + HYPERSHIFT_PLATFORM: "azure" HYPERSHIFT_NODE_COUNT: "6" HYPERSHIFT_AZURE_LOCATION: "centralus" AZURE_SELF_MANAGED: "true" diff --git a/ci-operator/step-registry/hypershift/azure/run-e2e-v2-selfmanaged/hypershift-azure-run-e2e-v2-selfmanaged-chain.yaml b/ci-operator/step-registry/hypershift/azure/run-e2e-v2-selfmanaged/hypershift-azure-run-e2e-v2-selfmanaged-chain.yaml index 131a579ad83b2..65a380fea1401 100644 --- a/ci-operator/step-registry/hypershift/azure/run-e2e-v2-selfmanaged/hypershift-azure-run-e2e-v2-selfmanaged-chain.yaml +++ b/ci-operator/step-registry/hypershift/azure/run-e2e-v2-selfmanaged/hypershift-azure-run-e2e-v2-selfmanaged-chain.yaml @@ -3,66 +3,20 @@ chain: steps: - as: tests cli: latest + env: + - name: HYPERSHIFT_PLATFORM + default: "" + documentation: "The cloud platform for the self-managed clusters (e.g. azure). Set in the workflow env block." commands: |- set -xuo pipefail - - # Use the nested management cluster kubeconfig export KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" - export EVENTUALLY_VERBOSE="false" - - # Export private NAT subnet ID for private topology tests - AZURE_PRIVATE_NAT_SUBNET_ID="" - if [[ -f "${SHARED_DIR}/azure_private_nat_subnet_id" ]]; then - AZURE_PRIVATE_NAT_SUBNET_ID="$(cat "${SHARED_DIR}/azure_private_nat_subnet_id")" - fi - export AZURE_PRIVATE_NAT_SUBNET_ID - - PUBLIC_NAME="$(cat "${SHARED_DIR}/cluster-name-public")" - PRIVATE_NAME="$(cat "${SHARED_DIR}/cluster-name-private")" - OAUTH_LB_NAME="$(cat "${SHARED_DIR}/cluster-name-oauth-lb")" - - # Run all 3 test suites in parallel (clusters are independent) - echo "$(date) Running public cluster tests against ${PUBLIC_NAME}..." - E2E_HOSTED_CLUSTER_NAME="${PUBLIC_NAME}" \ - E2E_HOSTED_CLUSTER_NAMESPACE=clusters \ - bin/test-e2e-v2 \ - --ginkgo.label-filter="self-managed-azure-public" \ - --ginkgo.skip="KAS allowed CIDRs" \ - --ginkgo.junit-report="${ARTIFACT_DIR}/junit_self_managed_azure_public.xml" \ - --ginkgo.v & - PID_PUB=$! - - echo "$(date) Running private topology tests against ${PRIVATE_NAME}..." - E2E_HOSTED_CLUSTER_NAME="${PRIVATE_NAME}" \ - E2E_HOSTED_CLUSTER_NAMESPACE=clusters \ - bin/test-e2e-v2 \ - --ginkgo.label-filter="self-managed-azure-private" \ - --ginkgo.junit-report="${ARTIFACT_DIR}/junit_self_managed_azure_private.xml" \ - --ginkgo.v & - PID_PRV=$! - - echo "$(date) Running OAuth LB tests against ${OAUTH_LB_NAME}..." - E2E_HOSTED_CLUSTER_NAME="${OAUTH_LB_NAME}" \ - E2E_HOSTED_CLUSTER_NAMESPACE=clusters \ - bin/test-e2e-v2 \ - --ginkgo.label-filter="self-managed-azure-oauth-lb" \ - --ginkgo.junit-report="${ARTIFACT_DIR}/junit_self_managed_azure_oauth_lb.xml" \ - --ginkgo.v & - PID_OAU=$! - - echo "$(date) Waiting for all test suites to complete..." - OVERALL_EXIT=0 - wait ${PID_PUB} || OVERALL_EXIT=1 - echo "$(date) Public cluster tests finished (exit=$?)" - wait ${PID_PRV} || OVERALL_EXIT=1 - echo "$(date) Private topology tests finished (exit=$?)" - wait ${PID_OAU} || OVERALL_EXIT=1 - echo "$(date) OAuth LB tests finished (exit=$?)" - - exit ${OVERALL_EXIT} - timeout: 45m + /hypershift/bin/run-tests + timeout: 150m grace_period: 5m from: hypershift-tests + dependencies: + - name: "release:latest" + env: RELEASE_IMAGE_LATEST resources: requests: cpu: "1"