Skip to content

CNTRLPLANE-3600: Bump Prow CI build root image to Go 1.26#8941

Open
bryan-cox wants to merge 1 commit into
openshift:mainfrom
bryan-cox:bump-ci-golang-1.26
Open

CNTRLPLANE-3600: Bump Prow CI build root image to Go 1.26#8941
bryan-cox wants to merge 1 commit into
openshift:mainfrom
bryan-cox:bump-ci-golang-1.26

Conversation

@bryan-cox

@bryan-cox bryan-cox commented Jul 6, 2026

Copy link
Copy Markdown
Member

What this PR does / why we need it:

Bumps the Prow CI build root image from golang-1.25 to golang-1.26.

The k8s v0.36.2 dependency bump in #8695 sets go 1.26.0 in go.mod. PR #8888 already updated the GHA runner image to Go 1.26.4, but Prow e2e jobs still fail because the build root image has Go 1.25.8:

go: go.mod requires go >= 1.26.0 (running go 1.25.8; GOTOOLCHAIN=local)

Which issue(s) this PR fixes:

Fixes CNTRLPLANE-3600

Special notes for your reviewer:

Prerequisite for #8695 (k8s bump). The golang-1.26 image already exists in the CI registry.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Chores
    • Updated the build job environment to use a newer Go 1.26-based image, keeping release builds on a current platform.

The k8s v0.36.2 dependency bump requires Go 1.26 (go.mod has
go 1.26.0). Update the ci-operator build root image from
golang-1.25 to golang-1.26 so Prow jobs can compile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 6, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 6, 2026

Copy link
Copy Markdown

@bryan-cox: This pull request references CNTRLPLANE-3600 which is a valid jira issue.

Details

In response to this:

What this PR does / why we need it:

Bumps the Prow CI build root image from golang-1.25 to golang-1.26.

The k8s v0.36.2 dependency bump in #8695 sets go 1.26.0 in go.mod. PR #8888 already updated the GHA runner image to Go 1.26.4, but Prow e2e jobs still fail because the build root image has Go 1.25.8:

go: go.mod requires go >= 1.26.0 (running go 1.25.8; GOTOOLCHAIN=local)

Which issue(s) this PR fixes:

Fixes CNTRLPLANE-3600

Special notes for your reviewer:

Prerequisite for #8695 (k8s bump). The golang-1.26 image already exists in the CI registry.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

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 openshift-eng/jira-lifecycle-plugin repository.

@bryan-cox

Copy link
Copy Markdown
Member Author

/area ci-tooling

@openshift-ci
openshift-ci Bot requested review from clebs and csrwng July 6, 2026 17:44
@openshift-ci openshift-ci Bot added area/ci-tooling Indicates the PR includes changes for CI or tooling and removed do-not-merge/needs-area labels Jul 6, 2026
@openshift-ci

openshift-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bryan-cox

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 6, 2026
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: a326836a-e7bd-40e7-bb23-7c2e52c7c5dd

📥 Commits

Reviewing files that changed from the base of the PR and between dda6055 and db8bc73.

📒 Files selected for processing (1)
  • .ci-operator.yaml

📝 Walkthrough

Walkthrough

This change updates the tag field for build_root_image in .ci-operator.yaml, switching from the RHEL 9 OpenShift 4.23 Go 1.25 image to the corresponding Go 1.26 image.

Possibly related PRs

  • openshift/hypershift#8888: Also updates the Go toolchain version from 1.25 to 1.26, but in the GitHub Actions runner image configuration.
🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: bumping the Prow CI build root image to Go 1.26.
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 only updates .ci-operator.yaml build_root_image tag; no Ginkgo tests or titles were added/changed, so no unstable names to flag.
Test Structure And Quality ✅ Passed Only .ci-operator.yaml changed; no Ginkgo test code was modified, so the test-quality check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Only .ci-operator.yaml changed, bumping the build_root_image tag from Go 1.25 to 1.26; no manifests, controllers, or scheduling constraints were modified.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Only .ci-operator.yaml changed to bump the build_root_image tag; no Ginkgo e2e tests were added or modified.
No-Weak-Crypto ✅ Passed PR only changes the CI build_root_image tag from Go 1.25 to 1.26; no crypto code, weak algorithms, or secret comparisons are touched.
Container-Privileges ✅ Passed PR only bumps the build_root_image tag from golang-1.25 to golang-1.26; no privileged, hostPID/Network/IPC, or allowPrivilegeEscalation fields are present or changed.
No-Sensitive-Data-In-Logs ✅ Passed Only .ci-operator.yaml build root image tag changed; no logging or sensitive-data patterns were introduced.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 43.45%. Comparing base (dda6055) to head (db8bc73).
⚠️ Report is 18 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #8941   +/-   ##
=======================================
  Coverage   43.45%   43.45%           
=======================================
  Files         771      771           
  Lines       95718    95718           
=======================================
  Hits        41597    41597           
  Misses      51234    51234           
  Partials     2887     2887           
Flag Coverage Δ
cmd-support 37.12% <ø> (ø)
cpo-hostedcontrolplane 45.21% <ø> (ø)
cpo-other 45.10% <ø> (ø)
hypershift-operator 53.65% <ø> (ø)
other 32.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@csrwng

csrwng commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

/lgtm

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

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-v2-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-gke

@bryan-cox

Copy link
Copy Markdown
Member Author

/verified by e2e

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 6, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@bryan-cox: This PR has been marked as verified by e2e.

Details

In response to this:

/verified by e2e

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD dda6055 and 2 for PR HEAD db8bc73 in total

@hypershift-jira-solve-ci

Copy link
Copy Markdown
Contributor

AI Test Failure Analysis

Job: pull-ci-openshift-hypershift-main-e2e-aws | Build: 2074203787446194176 | Cost: $3.2893604999999986 | Failed step: hypershift-aws-run-e2e-nested

View full analysis report


Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6

@cwbotbot

cwbotbot commented Jul 7, 2026

Copy link
Copy Markdown

Test Results

e2e-aws

Failed Tests

Total failed tests: 26

  • TestAutoscaling
  • TestAutoscaling/ValidateHostedCluster
  • TestCreateCluster
  • TestCreateCluster/ValidateHostedCluster
  • TestCreateClusterCustomConfig

... and 21 more failed tests

e2e-aks

@JoelSpeed

Copy link
Copy Markdown
Contributor

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD a627c48 and 1 for PR HEAD db8bc73 in total

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 1aca754 and 0 for PR HEAD db8bc73 in total

@bryan-cox

Copy link
Copy Markdown
Member Author

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/hold

Revision db8bc73 was retested 3 times: holding

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 8, 2026
@hypershift-jira-solve-ci

Copy link
Copy Markdown
Contributor

AI Test Failure Analysis

Job: pull-ci-openshift-hypershift-main-e2e-aws | Build: 2074634357158449152 | Cost: $2.4040405 | Failed step: hypershift-aws-run-e2e-nested

View full analysis report


Generated by hypershift-analyze-e2e-failure post-step using Claude claude-opus-4-6

@bryan-cox

Copy link
Copy Markdown
Member Author

/retest

@bryan-cox

Copy link
Copy Markdown
Member Author

/test e2e-aws

Issue with teardown flake

@bryan-cox

Copy link
Copy Markdown
Member Author

/retest

@bryan-cox

Copy link
Copy Markdown
Member Author

/test e2e-aws

All failures have been different. Last one looks like an infra issue.

@bryan-cox

Copy link
Copy Markdown
Member Author

/retest

@clebs

clebs commented Jul 13, 2026

Copy link
Copy Markdown
Member

/lgtm

@clebs

clebs commented Jul 13, 2026

Copy link
Copy Markdown
Member

/test e2e-aws

@bryan-cox

Copy link
Copy Markdown
Member Author

/test e2e-aws

@openshift-ci

openshift-ci Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@bryan-cox: 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/prow/e2e-aws db8bc73 link true /test e2e-aws

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.

@hypershift-jira-solve-ci

hypershift-jira-solve-ci Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

The analyzer timed out waiting for artifacts. Now I have all the information needed. Let me produce the final report.

Test Failure Analysis Complete

Job Information

  • Prow Job: pull-ci-openshift-hypershift-main-e2e-aws
  • Build ID: 2077074928846245888
  • Target: e2e-aws
  • PR: CNTRLPLANE-3600: Bump Prow CI build root image to Go 1.26 #8941CNTRLPLANE-3600: Bump Prow CI build root image to Go 1.26
  • Failed Test: TestCreateCluster/Main/EnsureGlobalPullSecret/When_management-cluster_hostedCluster.Spec.PullSecret_is_updated_in-place_it_should_propagate_to_guest_without_rollout

Test Failure Analysis

Error

failed to wait for DaemonSet global-pull-secret-syncer to be ready: context deadline exceeded

DaemonSet global-pull-secret-syncer stuck at 2/3 pods ready for ~1265 seconds until timeout.

Summary

The EnsureGlobalPullSecret subtest patches the management-cluster pull secret in-place and waits for propagation to the guest cluster. As part of this, it deploys a global-pull-secret-syncer DaemonSet and waits for all pods to become ready. The DaemonSet remained stuck at 2/3 pods ready (one pod never became ready on one of the 3 nodes), eventually hitting a context deadline after ~21 minutes. This is a known flaky test (~7% failure rate) unrelated to the Go 1.26 build root bump in this PR. The PR only modifies .ci-operator.yaml to change the CI test runner image — the operator binaries deployed in the cluster are still compiled with Go 1.25 from the Dockerfiles.

Root Cause

Known flaky test — not caused by PR changes.

The global-pull-secret-syncer DaemonSet failing to reach 3/3 ready pods is a known intermittent issue tracked under:

The exact same failure (2/3 pods stuck, context deadline exceeded after ~1200s) has been observed on other PRs that do not involve Go version changes (e.g., build 2076767540909969408 on PR #8990).

Why this is unrelated to the Go 1.26 bump:

  • PR CNTRLPLANE-3600: Bump Prow CI build root image to Go 1.26 #8941 modifies only .ci-operator.yaml, changing the build root image from golang-1.25 to golang-1.26.
  • The build root image is used only for CI test/lint steps (test runner environment).
  • All four Dockerfiles (Dockerfile, Dockerfile.control-plane, Dockerfile.e2e, Dockerfile.dev) continue to use golang-1.25 base images — the actual hypershift-operator, control-plane-operator, and e2e test binaries deployed in the cluster are compiled with Go 1.25.
  • The software under test is byte-for-byte identical to what runs without this PR.
Recommendations
  1. Retry the job — This is a flaky test with ~7% failure rate. A re-run is expected to pass.
  2. No code changes needed in this PR — The failure is not caused by the Go 1.26 build root bump.
  3. Track OCPBUGS-98465 — The upstream fix (PR OCPBUGS-98465: prevent DS crash in pull secret verifier and add propagation diagnostics #8991) adds diagnostic logging to identify why the global-pull-secret-syncer DaemonSet intermittently fails to become ready on all nodes. Once the root cause is identified, a follow-up fix will reduce the flake rate.
Evidence
Evidence Detail
Failed test TestCreateCluster/Main/EnsureGlobalPullSecret/When_management-cluster_hostedCluster.Spec.PullSecret_is_updated_in-place_it_should_propagate_to_guest_without_rollout
Error message failed to wait for DaemonSet global-pull-secret-syncer to be ready: context deadline exceeded
DaemonSet status Stuck at 2/3 pods ready for ~1265 seconds (logged 100+ times at util.go:2290)
Failure duration 1265.18s (~21 minutes) before timeout
PR changes Single file: .ci-operator.yaml — build root image tag golang-1.25golang-1.26
Build root (line 30) openshift/release:rhel-9-release-golang-1.26-openshift-4.23 (CI test runner only)
Operator images (lines 33-34) ocp_builder:rhel-9-golang-1.25-openshift-4.23 and openshift_release:rhel-9-release-golang-1.25-openshift-4.23 (unchanged)
Known flake rate ~7% (1 in 14 runs), documented in PR #8991
Tracking bugs OCPBUGS-98464 (fixed), OCPBUGS-98465 (open, on hold)
Identical failure on other PRs Build 2076767540909969408 on PR #8990 (same 2/3-stuck symptom, no Go version change)
All other tests 619 passed, 30 skipped — only the EnsureGlobalPullSecret subtest failed

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. area/ci-tooling Indicates the PR includes changes for CI or tooling do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants