Skip to content

ARO-HCP: add upgrade-path presubmit - #81044

Merged
openshift-merge-bot[bot] merged 3 commits into
openshift:mainfrom
gmfrasca:aro27255-e2e-upgrade-from-main
Jul 16, 2026
Merged

ARO-HCP: add upgrade-path presubmit#81044
openshift-merge-bot[bot] merged 3 commits into
openshift:mainfrom
gmfrasca:aro27255-e2e-upgrade-from-main

Conversation

@gmfrasca

@gmfrasca gmfrasca commented Jun 24, 2026

Copy link
Copy Markdown
Member

Summary

Adds an optional presubmit job (upgrade-e2e-parallel) that validates infrastructure upgrades from main to the PR branch, catching regressions that only appear when existing environments are upgraded rather than freshly provisioned.

  • New step: aro-hcp-provision-from-main — checks out origin/main and provisions a baseline environment using main's Bicep/Helm/config
  • New workflow: aro-hcp-upgrade-e2e — orchestrates baseline provision → upgrade → e2e test → deprovision
  • Modified step: aro-hcp-provision-environment — parameterized --abort-if-regional-exist via ARO_HCP_PROVISION_ABORT_IF_EXISTS so the upgrade phase can re-deploy over the baseline
  • New presubmit: upgrade-e2e-parallel in Azure-ARO-HCP-main.yaml — optional, auto-triggers on dev-infrastructure/, config/, *pipeline.yaml, *.bicep, *.bicepparam changes

How it works

  1. provision-from-main fetches and checks out main, provisions the environment with main's templates (no CI image overrides)
  2. aro-hcp-upgrade-environment (aliased provision-environment) runs in a fresh container with PR source, applies CI-built image overrides, and re-runs make entrypoint/Region — ARM idempotency means only changed resources are updated
  3. aro-hcp-test-local runs the full e2e suite against the upgraded environment
  4. Post steps gather artifacts and deprovision

Testing

  • Rehearsal via /test upgrade-e2e-parallel on this PR or an ARO-HCP PR
  • Verify Spyglass labels distinguish provision-from-main from aro-hcp-upgrade-environment
  • Confirm e2e-parallel and upgrade-e2e-parallel coexist without Boskos contention

JIRA: ARO-27255

Summary by CodeRabbit

This PR enhances the OpenShift CI/Azure ARO-HCP infrastructure pipelines by adding an optional presubmit job, upgrade-e2e-parallel, to validate the full infrastructure upgrade flow from main to the PR branch.

Key changes:

  • New optional presubmit (upgrade-e2e-parallel) in ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yaml
    • Runs the new aro-hcp-upgrade-e2e workflow.
    • Auto-triggers only on infra-relevant changes: dev-infrastructure/, config/, *pipeline.yaml, *.bicep, and *.bicepparam.
    • Guarded so it doesn’t auto-run by default (run_if_changed: ^NEVER_AUTO_TRIGGER$).
    • Uses upgrade-friendly provisioning settings:
      • ARO_HCP_CLOUD=dev, ARO_HCP_DEPLOY_ENV=ci01
      • ARO_HCP_PROVISION_ABORT_IF_EXISTS="false" (so the upgrade phase can redeploy over the baseline)
      • ARO_HCP_SUITE_PARALLELISM="55"
      • MULTISTAGE_PARAM_OVERRIDE_LOCATION=westus3
    • Adds an explicit 10h timeout.
  • New baseline + upgrade E2E workflow/steps
    • aro-hcp-provision-from-main provisions a baseline by checking out origin/main while using PR-built image digests from CI inputs, generating config-override.yaml (including optional MSI mock SP overrides and optional MGMT AKS sizing overrides), templating via make ... templatize, and emitting baseline artifacts/config for the next phase.
    • aro-hcp-upgrade-e2e workflow:
      • Acquires the LEASED_MSI_MOCK_SP lease.
      • Provisions baseline from main (aro-hcp-provision-from-main).
      • Provisions the PR upgrade environment by wiring aro-hcp-upgrade-environmentaro-hcp-provision-environment.
      • Runs local e2e tests (aro-hcp-test-local).
      • Executes best-effort post steps (diagnostics/visualization/snapshot), then deprovisions the environment and releases the lease.
      • Includes documentation to help interpret failures as either baseline-provisioning vs upgrade regression.
  • Upgrade-friendly provisioning behavior
    • Updates aro-hcp-provision-environment to introduce ARO_HCP_PROVISION_ABORT_IF_EXISTS (default "true").
    • The provisioning commands now include --abort-if-regional-exist only when ARO_HCP_PROVISION_ABORT_IF_EXISTS is "true", enabling redeploy-on-top behavior for upgrade workflows.
  • Governance + documentation
    • Adds step registry metadata/OWNERS for the new from-main and upgrade-e2e steps/workflow.
    • Documents the new optional presubmit in ci-operator/config/Azure/ARO-HCP/README.md.
    • Incorporates the requested rehearsal note for running:
      • /pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@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 Jun 24, 2026
@openshift-ci

openshift-ci Bot commented Jun 24, 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 Jun 24, 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 a from-main provisioning step, a new upgrade-e2e workflow and optional presubmit job, and a configurable flag to skip aborting when regional infrastructure already exists.

Changes

ARO-HCP upgrade flow

Layer / File(s) Summary
Provisioning abort toggle
ci-operator/step-registry/aro-hcp/provision/environment/...
Adds ARO_HCP_PROVISION_ABORT_IF_EXISTS and uses it to conditionally include the regional abort flag in provisioning.
From-main provisioning step
ci-operator/step-registry/aro-hcp/provision/from-main/...
Adds the from-main step registry entry, command script, metadata, and OWNERS files for fetching main, building override config, and emitting provisioning artifacts.
Upgrade workflow and job
ci-operator/step-registry/aro-hcp/upgrade-e2e/..., ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yaml, ci-operator/config/Azure/ARO-HCP/README.md
Adds the aro-hcp-upgrade-e2e workflow, its registry metadata and OWNERS entries, wires the optional presubmit job, and documents the presubmit entry.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CIConfig as Azure-ARO-HCP-main.yaml
  participant Workflow as aro-hcp-upgrade-e2e
  participant Baseline as aro-hcp-provision-from-main
  participant Upgrade as aro-hcp-upgrade-environment
  participant Tests as aro-hcp-test-local
  CIConfig->>Workflow: run upgrade-e2e-parallel
  Workflow->>Baseline: provision baseline from main
  Workflow->>Upgrade: provision PR upgrade environment
  Workflow->>Tests: run local e2e tests
Loading

Suggested labels: rehearsals-ack


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error New provisioning scripts echo source registries and dump config-override.yaml, which can expose internal hostnames and IDs in CI logs. Remove or redact registry hostnames and config dumps; log only non-sensitive summaries or masked values, and avoid printing generated override files.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding an ARO-HCP upgrade-path presubmit.
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 No Ginkgo-style test titles appear in the changed files; searches of the modified ARO-HCP paths found no It/Describe/Context/When calls.
Test Structure And Quality ✅ Passed No Ginkgo test code was changed; the PR only touches CI config, YAML/JSON, and shell scripts, so the test-quality check is not applicable.
Microshift Test Compatibility ✅ Passed The PR only adds CI workflow/config and shell scripts; no new Ginkgo It/Describe/Context/When tests or MicroShift-sensitive APIs were introduced.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS: The diff adds CI workflow/job and shell scripts only; no new Go/Ginkgo test files or It/Describe/Context/When markers appear, so SNO compatibility is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR only adds CI workflow/step-registry plumbing and shell glue; no Deployment/StatefulSet/affinity/topology/PDB/nodeSelector changes were introduced.
Ote Binary Stdout Contract ✅ Passed PR changes only CI config and shell step scripts; no OTE Go/binary process-level code or suite setup was added, so stdout contract issues aren’t applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e test definitions were added; the diff is workflow/CI plumbing and I found no IPv4-specific test logic in touched test code.
No-Weak-Crypto ✅ Passed Scanned all touched files; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB usage, custom crypto, or secret/token comparisons were found.
Container-Privileges ✅ Passed Scanned changed manifests and presubmits; no privileged, hostPID/Network/IPC, allowPrivilegeEscalation, or SYS_ADMIN settings were added.
✨ 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.

@gmfrasca gmfrasca changed the title feat(step-registry): add upgrade-path presubmit for ARO-HCP (ARO-27255) ARO-HCP: add upgrade-path presubmit Jun 24, 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: 1

🤖 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/Azure/ARO-HCP/README.md`:
- Line 11: The README’s ARO-HCP documentation link is broken because it points
to a non-existent path in Azure/ARO-HCP@main. Update the link in the README to a
real existing document, or add the referenced doc as part of this change, and
make sure the `upgrade-e2e-parallel` description still points users to the
correct usage and failure-interpretation guidance.
🪄 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: 4d8539a6-3309-4a5f-934d-f87e2737b5ec

📥 Commits

Reviewing files that changed from the base of the PR and between fd488e8 and 59eb264.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/Azure/ARO-HCP/Azure-ARO-HCP-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (11)
  • ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yaml
  • ci-operator/config/Azure/ARO-HCP/README.md
  • ci-operator/step-registry/aro-hcp/provision/environment/aro-hcp-provision-environment-commands.sh
  • ci-operator/step-registry/aro-hcp/provision/environment/aro-hcp-provision-environment-ref.yaml
  • ci-operator/step-registry/aro-hcp/provision/from-main/OWNERS
  • ci-operator/step-registry/aro-hcp/provision/from-main/aro-hcp-provision-from-main-commands.sh
  • ci-operator/step-registry/aro-hcp/provision/from-main/aro-hcp-provision-from-main-ref.metadata.json
  • ci-operator/step-registry/aro-hcp/provision/from-main/aro-hcp-provision-from-main-ref.yaml
  • ci-operator/step-registry/aro-hcp/upgrade-e2e/OWNERS
  • ci-operator/step-registry/aro-hcp/upgrade-e2e/aro-hcp-upgrade-e2e-workflow.metadata.json
  • ci-operator/step-registry/aro-hcp/upgrade-e2e/aro-hcp-upgrade-e2e-workflow.yaml

Comment thread ci-operator/config/Azure/ARO-HCP/README.md Outdated
Comment thread ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yaml
Comment on lines +1 to +101
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail

env_file="${SHARED_DIR}/aro-hcp-slot.env"
if [[ -f "${env_file}" ]]; then
# shellcheck disable=SC1090
source "${env_file}"
fi

export LOCATION="${SELECTED_LOCATION:-${LOCATION:-}}"
: "${LOCATION:?LOCATION must be provided by SELECTED_LOCATION or the legacy runtime slot export file}"

export CLUSTER_PROFILE_DIR="/var/run/aro-hcp-${VAULT_SECRET_PROFILE}"

export AZURE_CLIENT_ID; AZURE_CLIENT_ID=$(cat "${CLUSTER_PROFILE_DIR}/client-id")
export AZURE_TENANT_ID; AZURE_TENANT_ID=$(cat "${CLUSTER_PROFILE_DIR}/tenant")
export AZURE_CLIENT_SECRET; AZURE_CLIENT_SECRET=$(cat "${CLUSTER_PROFILE_DIR}/client-secret")
INFRA_SUBSCRIPTION_ID=$(cat "${CLUSTER_PROFILE_DIR}/infra-${ARO_HCP_DEPLOY_ENV}-subscription-id")
export INFRA_SUBSCRIPTION_ID
export DEPLOY_ENV="${ARO_HCP_DEPLOY_ENV}"
export AZURE_TOKEN_CREDENTIALS=prod

az login --service-principal -u "${AZURE_CLIENT_ID}" -p "${AZURE_CLIENT_SECRET}" --tenant "${AZURE_TENANT_ID}" --output none
az account set --subscription "${INFRA_SUBSCRIPTION_ID}"
oc version
kubelogin --version

# Check out main branch to provision the baseline environment.
# The container image has the PR source baked in; we swap to main so that
# Bicep templates, Helm charts, config, and pipeline definitions all come
# from the current state of the default branch.
echo "Fetching and checking out origin/main for baseline provision ..."
git fetch origin main
git checkout FETCH_HEAD
echo "Checked out main at $(git rev-parse --short HEAD)"

OVERRIDE_CONFIG_FILE="${SHARED_DIR}/config-override.yaml"

# MSI mock SP overrides (if provided) — needed for both baseline and upgrade
if [[ -n "${LEASED_MSI_MOCK_SP:-}" ]]; then
MSI_MOCK_CLIENT_ID=$(yq ".miMockPool.\"${LEASED_MSI_MOCK_SP}\".clientId" dev-infrastructure/openshift-ci/msi-mock-pool.yaml)
MSI_MOCK_PRINCIPAL_ID=$(yq ".miMockPool.\"${LEASED_MSI_MOCK_SP}\".principalId" dev-infrastructure/openshift-ci/msi-mock-pool.yaml)
MSI_MOCK_CERT_NAME=$(yq ".miMockPool.\"${LEASED_MSI_MOCK_SP}\".certName" dev-infrastructure/openshift-ci/msi-mock-pool.yaml)
if [[ -z "${MSI_MOCK_CLIENT_ID}" || "${MSI_MOCK_CLIENT_ID}" == "null" || \
-z "${MSI_MOCK_PRINCIPAL_ID}" || "${MSI_MOCK_PRINCIPAL_ID}" == "null" || \
-z "${MSI_MOCK_CERT_NAME}" || "${MSI_MOCK_CERT_NAME}" == "null" ]]; then
echo "ERROR: LEASED_MSI_MOCK_SP='${LEASED_MSI_MOCK_SP}' not found in dev-infrastructure/openshift-ci/msi-mock-pool.yaml"
exit 1
fi
echo "MSI mock SP override: ${LEASED_MSI_MOCK_SP} -> clientId=${MSI_MOCK_CLIENT_ID}"
yq eval -n "
.clouds.dev.environments.${DEPLOY_ENV}.defaults.miMockClientId = \"${MSI_MOCK_CLIENT_ID}\" |
.clouds.dev.environments.${DEPLOY_ENV}.defaults.miMockPrincipalId = \"${MSI_MOCK_PRINCIPAL_ID}\" |
.clouds.dev.environments.${DEPLOY_ENV}.defaults.miMockCertName = \"${MSI_MOCK_CERT_NAME}\"
" > "${OVERRIDE_CONFIG_FILE}"
else
echo "No MSI mock SP lease provided, skipping mock SP overrides"
echo "{}" > "${OVERRIDE_CONFIG_FILE}"
fi

# Temporary MGMT cluster sizing overrides for single-wave E2E parallelism.
# These will be removed once the matching config.yaml defaults land in ARO-HCP.
# Only apply when identity containers are leased (E2E runs); healthcheck
# workflows provision without leases and should use the default sizing.
if [[ -n "${LEASED_MSI_CONTAINERS:-}" ]]; then
yq -i "
.clouds.dev.environments.${DEPLOY_ENV}.defaults.mgmt.aks.userAgentPool.minCount = 7 |
.clouds.dev.environments.${DEPLOY_ENV}.defaults.mgmt.aks.infraAgentPool.vmSize = \"Standard_D8ds_v6\"
" "${OVERRIDE_CONFIG_FILE}"
else
yq -i "
.clouds.dev.environments.${DEPLOY_ENV}.defaults.mgmt.aks.userAgentPool.minCount = 1
" "${OVERRIDE_CONFIG_FILE}"
fi

echo "Created override config at: ${OVERRIDE_CONFIG_FILE}"
cat "${OVERRIDE_CONFIG_FILE}"

CONFIG_PROV="${SHARED_DIR}/config-prov.yaml"

finalize() {
if [[ -s "${CONFIG_PROV}" ]]; then
mv "${CONFIG_PROV}" "${SHARED_DIR}/config.yaml"
cp "${SHARED_DIR}/config.yaml" "${ARTIFACT_DIR}/config.yaml"
fi
}
trap finalize EXIT

unset GOFLAGS
make -o tooling/templatize/templatize entrypoint/Region \
DEPLOY_ENV="${DEPLOY_ENV}" \
OVERRIDE_CONFIG_FILE="${OVERRIDE_CONFIG_FILE}" \
EXTRA_ARGS="--region ${LOCATION} --abort-if-regional-exist" \
TIMING_OUTPUT=${SHARED_DIR}/steps.yaml.gz \
ENTRYPOINT_JUNIT_OUTPUT=${ARTIFACT_DIR}/junit_entrypoint_baseline.xml \
CONFIG_OUTPUT=${CONFIG_PROV}

touch "${SHARED_DIR}/provision-from-main-complete"
echo "Baseline provision from main complete."

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.

Could we tweak and reuse the same provision script everywhere? This is a lot of duplication.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

So ideally, to reuse the provision script we'd want to centralize it in a library script, but step-registry only injects *-commands.sh into the pod - other files in the registry directory aren't mounted at runtime so the library wouldn't be available.

With that said, the ARO-HCP repo itself is also mounted, so we can put a shared provision script there (e.g. dev-infrastructure/openshift-ci/lib/provision-common.sh) and have each *-commands.sh source it. I think that would be better suited for a follow-up task though, as we should have provision-global-pipeline, provision-environment, and provision-from-main all switch over to the centralized provision script in the same PR

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

discussed in-person: Updated the (currently un-utilized) provision script[1] that was already in ARO-HCP with recent changes. Once that's in, we can leverage it here and in the provision-environment step, which I propose doing in a separate PR:

[1] Azure/ARO-HCP#5866

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.

Do you want to merge the script as-is now or wait for Azure/ARO-HCP#5866 to land? Either option is fine with me.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

i'd say lets merge this as-is - Azure/ARO-HCP#5866 touches a lot more than just this optional job, so let's get some real-world usage out of it as a sort-of validation step before centralizing, since that would have a bigger blast radius

@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from 59eb264 to 91696d9 Compare June 29, 2026 22:35
@gmfrasca
gmfrasca marked this pull request as ready for review July 2, 2026 23:12
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 2, 2026
@openshift-ci
openshift-ci Bot requested review from deads2k and geoberle July 2, 2026 23:12
@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from 91696d9 to f03f8f8 Compare July 7, 2026 07:04
@gmfrasca

gmfrasca commented Jul 7, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from f03f8f8 to 18eb260 Compare July 8, 2026 08:06
@gmfrasca

gmfrasca commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca

gmfrasca commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca

gmfrasca commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca

gmfrasca commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from 18eb260 to c0ba249 Compare July 9, 2026 01:31
@gmfrasca

gmfrasca commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca

Copy link
Copy Markdown
Member Author

/retest
/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@gmfrasca

Copy link
Copy Markdown
Member Author

/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@gmfrasca

Copy link
Copy Markdown
Member Author

/retest
/pj-rehearse pull-ci-Azure-ARO-HCP-main-upgrade-e2e-parallel

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

workflow: aro-hcp-local-e2e
- as: upgrade-e2e-parallel
optional: true
run_if_changed: ^NEVER_AUTO_TRIGGER$

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.

You can achieve the same on-demand only behavior with always_run: false and drop the run_if_changed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

ah interesting - the original config used optional: true without run_if_changed at all, which was apparently an unsupported configuration and failed a job config ci check for not having run_if_changed. If always_run: false satisfies that requirement that would be much more preferable than the unmatchable regex hack used here. Will update see if the config check passes

- **`Azure-ARO-HCP-main__periodic.yaml`** - Scheduled periodic jobs (cluster creation, E2E tests, cleanup)
- **`Azure-ARO-HCP-main__image-updater.yaml`** - Automated image digest update job - Mon-Fri

The `upgrade-e2e-parallel` optional presubmit validates main-to-PR infrastructure upgrades. See [ARO-HCP docs](https://github.com/Azure/ARO-HCP/blob/main/docs/ci-upgrade-path-presubmit.md) for usage and failure interpretation.

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.

This doc is completely out of date. All our CI docs live in the ARO-HCP repo, we should just remove this whole doc.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

noted. for a cleaner git history, i think i should remove just this block (so no net changes made here), and i'll open another PR to simply remove this entire doc. Will also move the full doc referenced here (added by Azure/ARO-HCP#5780) to the ci/ subdir

gmfrasca added 2 commits July 15, 2026 10:50
Add an optional presubmit that validates main-to-PR infrastructure
upgrades by provisioning from main then upgrading to the PR branch.

- New step: aro-hcp-provision-from-main (baseline provision from main)
- New workflow: aro-hcp-upgrade-e2e (provision → upgrade → e2e)
- Parameterize --abort-if-regional-exist in provision-environment

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
…images

Replace pipeline image dependency injection with direct ACR lookup by
main's commit SHA, matching the tag format used by images-push postsubmit.
Includes retry loop with parent-commit fallback for race conditions.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from 88565d5 to 969cea7 Compare July 15, 2026 14:50
Comment on lines +39 to +41
# The CSPR postsubmit pushes service images to ACR tagged with the 7-char
# commit SHA (see aro-hcp-images-push step). Resolve the tag and look up
# the digest for each service image so the baseline uses main's actual images.

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.

This comment is inaccurate and should be fixed to avoid misleading future maintainers.

Images are not pushed to ACR by the CSPR postsubmit. They're pushed by the generic images-push-postsubmit job, which runs the aro-hcp-images-push step with no env override, so DEPLOY_ENV = the ref default dev. That step mirrors the CI-built service images into the shared arohcpsvcdev ACR tagged with the 7-char commit SHA.

cspr-pipeline-postsubmit is a separate job that deploys the Clusters Service PR-check sandbox environment (DEPLOY_ENV=cspr); it doesn't own the image push, and per docs/cspr.md it uses the same shared arohcpsvcdev ACR anyway.

The resolution here still works only because every dev env (including ci01) shares that one arohcpsvcdev ACR and the same repos, so the ci01-vs-dev DEPLOY_ENV divergence is masked. Suggest:

  • Reword the comment to reference the generic images-push-postsubmit job / aro-hcp-images-push step (pushes to arohcpsvcdev by 7-char SHA), and drop the CSPR reference.
  • Optionally resolve the ACR/repo coordinates with DEPLOY_ENV=dev (matching aro-hcp-images-push) instead of reusing the provisioning ARO_HCP_DEPLOY_ENV=ci01, so the dependency is explicit rather than relying on the shared-ACR coincidence.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Done. Reworded the comment to reference images-push-postsubmit / aro-hcp-images-push, and switched ACR/repo resolution to read from the dev config (IMAGES_DEPLOY_ENV="dev") since that's what images-push actually uses instead of implicitly relying on ci01 happening to share the same ACR.

…walk-back

Replace single-commit polling + parent fallback with a two-phase
approach: poll HEAD for 15m, then walk back up to 20 commits to
find the newest main SHA with images already pushed to ACR.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
@gmfrasca
gmfrasca force-pushed the aro27255-e2e-upgrade-from-main branch from 969cea7 to ea0b15c Compare July 15, 2026 17:00
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@gmfrasca: 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-Azure-ARO-HCP-main-upgrade-e2e-parallel Azure/ARO-HCP presubmit Presubmit changed
pull-ci-Azure-ARO-HCP-main-e2e-parallel Azure/ARO-HCP presubmit Registry content changed
pull-ci-Azure-ARO-HCP-main-capz-e2e-dev Azure/ARO-HCP presubmit Registry content changed
periodic-ci-Azure-ARO-HCP-main-periodic-healthcheck-provision-centralus N/A periodic Registry content changed
periodic-ci-Azure-ARO-HCP-main-periodic-healthcheck-provision-canadacentral N/A periodic Registry content changed
periodic-ci-Azure-ARO-HCP-main-periodic-healthcheck-provision-westus3 N/A periodic Registry content 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.

@openshift-ci

openshift-ci Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@gmfrasca: all tests passed!

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.

@roivaz

roivaz commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

/lgtm
/approve

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 16, 2026
@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gmfrasca, roivaz

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-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 16, 2026
@roivaz

roivaz commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

/pj-rehearse ack

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@openshift-merge-bot openshift-merge-bot Bot added the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label Jul 16, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit f0d4ba1 into openshift:main Jul 16, 2026
18 checks passed
bryan-cox added a commit to bryan-cox/release that referenced this pull request Jul 16, 2026
Replace the "latest by timestamp" image resolution strategy with
SHA-anchored resolution matching the pattern from PR openshift#81044. The
images-push-postsubmit job tags service images with the 7-char
commit SHA on every merge to ARO-HCP main. Resolving by SHA
guarantees version coherence across all services and avoids
picking up broken/in-progress images from dev ACR.

Includes polling (up to 15min) for the HEAD commit's images and
walk-back through recent history if HEAD's images aren't available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SachinNinganure pushed a commit to SachinNinganure/release that referenced this pull request Jul 20, 2026
* feat(step-registry): add upgrade-path presubmit for ARO HCP (ARO-27255)

Add an optional presubmit that validates main-to-PR infrastructure
upgrades by provisioning from main then upgrading to the PR branch.

- New step: aro-hcp-provision-from-main (baseline provision from main)
- New workflow: aro-hcp-upgrade-e2e (provision → upgrade → e2e)
- Parameterize --abort-if-regional-exist in provision-environment

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP upgrade-from-main:use images from ACR instead of CI-built PR images

Replace pipeline image dependency injection with direct ACR lookup by
main's commit SHA, matching the tag format used by images-push postsubmit.
Includes retry loop with parent-commit fallback for race conditions.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP: from-main upgrade resolve main images from ACR with history walk-back

Replace single-commit polling + parent fallback with a two-phase
approach: poll HEAD for 15m, then walk back up to 20 commits to
find the newest main SHA with images already pushed to ACR.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
fracappa pushed a commit to fracappa/release that referenced this pull request Jul 22, 2026
* feat(step-registry): add upgrade-path presubmit for ARO HCP (ARO-27255)

Add an optional presubmit that validates main-to-PR infrastructure
upgrades by provisioning from main then upgrading to the PR branch.

- New step: aro-hcp-provision-from-main (baseline provision from main)
- New workflow: aro-hcp-upgrade-e2e (provision → upgrade → e2e)
- Parameterize --abort-if-regional-exist in provision-environment

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP upgrade-from-main:use images from ACR instead of CI-built PR images

Replace pipeline image dependency injection with direct ACR lookup by
main's commit SHA, matching the tag format used by images-push postsubmit.
Includes retry loop with parent-commit fallback for race conditions.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP: from-main upgrade resolve main images from ACR with history walk-back

Replace single-commit polling + parent fallback with a two-phase
approach: poll HEAD for 15m, then walk back up to 20 commits to
find the newest main SHA with images already pushed to ACR.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
amogh-redhat pushed a commit to amogh-redhat/release that referenced this pull request Aug 5, 2026
* feat(step-registry): add upgrade-path presubmit for ARO HCP (ARO-27255)

Add an optional presubmit that validates main-to-PR infrastructure
upgrades by provisioning from main then upgrading to the PR branch.

- New step: aro-hcp-provision-from-main (baseline provision from main)
- New workflow: aro-hcp-upgrade-e2e (provision → upgrade → e2e)
- Parameterize --abort-if-regional-exist in provision-environment

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP upgrade-from-main:use images from ACR instead of CI-built PR images

Replace pipeline image dependency injection with direct ACR lookup by
main's commit SHA, matching the tag format used by images-push postsubmit.
Includes retry loop with parent-commit fallback for race conditions.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* ARO-HCP: from-main upgrade resolve main images from ACR with history walk-back

Replace single-commit polling + parent fallback with a two-phase
approach: poll HEAD for 15m, then walk back up to 20 commits to
find the newest main SHA with images already pushed to ACR.

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@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. lgtm Indicates that a PR is ready to be merged. rehearsals-ack Signifies that rehearsal jobs have been acknowledged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants