From 9498b0a0b39f0ba5424267c8fc29e31427c04091 Mon Sep 17 00:00:00 2001 From: Camila Macedo <7708031+camilamacedo86@users.noreply.github.com> Date: Mon, 10 Nov 2025 16:37:35 +0000 Subject: [PATCH] UPSTREAM: : fix(OTE): fix OpenShift Kubernetes replace version format Fix k8s.io/kubernetes replace version from v1.30.1-0... to v0.0.0-... format to resolve bumper tool verification failures. Add hack/ocp-replace.sh script to manage OCP fork replaces properly. Assisted-by: Cursor --- openshift/tests-extension/README.md | 19 ++- openshift/tests-extension/go.mod | 99 ++++++++----- openshift/tests-extension/go.sum | 4 +- openshift/tests-extension/hack/ocp-replace.sh | 136 ++++++++++++++++++ openshift/tests-extension/vendor/modules.txt | 5 +- 5 files changed, 221 insertions(+), 42 deletions(-) create mode 100755 openshift/tests-extension/hack/ocp-replace.sh diff --git a/openshift/tests-extension/README.md b/openshift/tests-extension/README.md index 4c3db6653..7587c6f6f 100644 --- a/openshift/tests-extension/README.md +++ b/openshift/tests-extension/README.md @@ -294,4 +294,21 @@ More information: ### How to get help with OTE? For help with the OpenShift Tests Extension (OTE), you can: -#wg-openshift-tests-extension \ No newline at end of file +#wg-openshift-tests-extension + +### How to update the go.mod/go.sum files with replaces? + +To get the latest replaces for ocp/* modules, run the following command: + +```shell +$ ./hack/ocp-replace.sh +Discovering latest OCP commit from https://github.com/openshift/kubernetes.git… +Resolving pseudo-version for k8s.io/kubernetes@891f5bb0306166d5625b89fc8dc86bbc8c85f549… +Resolved OCP version: v0.0.0-20251108023427-891f5bb03061 +Updating go.mod replaces… + +Done. + OCP commit: 891f5bb0306166d5625b89fc8dc86bbc8c85f549 + OCP version: v0.0.0-20251108023427-891f5bb03061 +go.mod and go.sum vendor/ updated. +``` \ No newline at end of file diff --git a/openshift/tests-extension/go.mod b/openshift/tests-extension/go.mod index 4d1cf5768..0d765b1cf 100644 --- a/openshift/tests-extension/go.mod +++ b/openshift/tests-extension/go.mod @@ -118,39 +118,66 @@ require ( sigs.k8s.io/yaml v1.6.0 // indirect ) -// This replace replace is required for we use the OCP fork of Ginkgo. -replace ( - github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20250416174521-4eb003743b54 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 - k8s.io/api => github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251108023427-891f5bb03061 - k8s.io/apiextensions-apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20251108023427-891f5bb03061 - k8s.io/apimachinery => github.com/openshift/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20251108023427-891f5bb03061 - k8s.io/apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20251108023427-891f5bb03061 - k8s.io/cli-runtime => github.com/openshift/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20251108023427-891f5bb03061 - k8s.io/client-go => github.com/openshift/kubernetes/staging/src/k8s.io/client-go v0.0.0-20251108023427-891f5bb03061 - k8s.io/cloud-provider => github.com/openshift/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20251108023427-891f5bb03061 - k8s.io/cluster-bootstrap => github.com/openshift/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20251108023427-891f5bb03061 - k8s.io/code-generator => github.com/openshift/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20251108023427-891f5bb03061 - k8s.io/component-base => github.com/openshift/kubernetes/staging/src/k8s.io/component-base v0.0.0-20251108023427-891f5bb03061 - k8s.io/component-helpers => github.com/openshift/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20251108023427-891f5bb03061 - k8s.io/controller-manager => github.com/openshift/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20251108023427-891f5bb03061 - k8s.io/cri-api => github.com/openshift/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20251108023427-891f5bb03061 - k8s.io/cri-client => github.com/openshift/kubernetes/staging/src/k8s.io/cri-client v0.0.0-20251108023427-891f5bb03061 - k8s.io/csi-translation-lib => github.com/openshift/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20251108023427-891f5bb03061 - k8s.io/dynamic-resource-allocation => github.com/openshift/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20251108023427-891f5bb03061 - k8s.io/endpointslice => github.com/openshift/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20251108023427-891f5bb03061 - k8s.io/externaljwt => github.com/openshift/kubernetes/staging/src/k8s.io/externaljwt v0.0.0-20251108023427-891f5bb03061 - k8s.io/kube-aggregator => github.com/openshift/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20251108023427-891f5bb03061 - k8s.io/kube-controller-manager => github.com/openshift/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20251108023427-891f5bb03061 - k8s.io/kube-proxy => github.com/openshift/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20251108023427-891f5bb03061 - k8s.io/kube-scheduler => github.com/openshift/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20251108023427-891f5bb03061 - k8s.io/kubectl => github.com/openshift/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20251108023427-891f5bb03061 - k8s.io/kubelet => github.com/openshift/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20251108023427-891f5bb03061 - k8s.io/kubernetes => github.com/openshift/kubernetes v1.30.1-0.20251108023427-891f5bb03061 - k8s.io/metrics => github.com/openshift/kubernetes/staging/src/k8s.io/metrics v0.0.0-20251108023427-891f5bb03061 - k8s.io/mount-utils => github.com/openshift/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20251108023427-891f5bb03061 - k8s.io/pod-security-admission => github.com/openshift/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20251108023427-891f5bb03061 - k8s.io/sample-apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20251108023427-891f5bb03061 - k8s.io/sample-cli-plugin => github.com/openshift/kubernetes/staging/src/k8s.io/sample-cli-plugin v0.0.0-20251108023427-891f5bb03061 - k8s.io/sample-controller => github.com/openshift/kubernetes/staging/src/k8s.io/sample-controller v0.0.0-20251108023427-891f5bb03061 -) +replace github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20250416174521-4eb003743b54 + +replace k8s.io/kubernetes => github.com/openshift/kubernetes v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/api => github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/apiextensions-apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/apimachinery => github.com/openshift/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/cli-runtime => github.com/openshift/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/client-go => github.com/openshift/kubernetes/staging/src/k8s.io/client-go v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/cloud-provider => github.com/openshift/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/cluster-bootstrap => github.com/openshift/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/code-generator => github.com/openshift/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/component-base => github.com/openshift/kubernetes/staging/src/k8s.io/component-base v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/component-helpers => github.com/openshift/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/controller-manager => github.com/openshift/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/cri-api => github.com/openshift/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/cri-client => github.com/openshift/kubernetes/staging/src/k8s.io/cri-client v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/csi-translation-lib => github.com/openshift/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/dynamic-resource-allocation => github.com/openshift/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/endpointslice => github.com/openshift/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/externaljwt => github.com/openshift/kubernetes/staging/src/k8s.io/externaljwt v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kube-aggregator => github.com/openshift/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kube-controller-manager => github.com/openshift/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kube-proxy => github.com/openshift/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kube-scheduler => github.com/openshift/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kubectl => github.com/openshift/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/kubelet => github.com/openshift/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/metrics => github.com/openshift/kubernetes/staging/src/k8s.io/metrics v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/mount-utils => github.com/openshift/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/pod-security-admission => github.com/openshift/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/sample-apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/sample-cli-plugin => github.com/openshift/kubernetes/staging/src/k8s.io/sample-cli-plugin v0.0.0-20251108023427-891f5bb03061 + +replace k8s.io/sample-controller => github.com/openshift/kubernetes/staging/src/k8s.io/sample-controller v0.0.0-20251108023427-891f5bb03061 diff --git a/openshift/tests-extension/go.sum b/openshift/tests-extension/go.sum index fe0f529c1..51606985e 100644 --- a/openshift/tests-extension/go.sum +++ b/openshift/tests-extension/go.sum @@ -106,8 +106,8 @@ github.com/openshift/api v0.0.0-20251106190826-ebe535b08719 h1:KEwYyKaJniwhoyLB7 github.com/openshift/api v0.0.0-20251106190826-ebe535b08719/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY= github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235 h1:9JBeIXmnHlpXTQPi7LPmu1jdxznBhAE7bb1K+3D8gxY= github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235/go.mod h1:L49W6pfrZkfOE5iC1PqEkuLkXG4W0BX4w8b+L2Bv7fM= -github.com/openshift/kubernetes v1.30.1-0.20251108023427-891f5bb03061 h1:kWubu+TA/SlhC4WicaEOVgrZbInY/fI73T68LxcocJY= -github.com/openshift/kubernetes v1.30.1-0.20251108023427-891f5bb03061/go.mod h1:w3+IfrXNp5RosdDXg3LB55yijJqR/FwouvVntYHQf0o= +github.com/openshift/kubernetes v0.0.0-20251108023427-891f5bb03061 h1:XVgudZfcjtF8UPIUarXXu6z7tZJLxrenIXOaB8e0tRk= +github.com/openshift/kubernetes v0.0.0-20251108023427-891f5bb03061/go.mod h1:w3+IfrXNp5RosdDXg3LB55yijJqR/FwouvVntYHQf0o= github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251108023427-891f5bb03061 h1:uE4i/OdgU+YypcJ7vc8abZJQRyd6zwnUpY9nSdBAHEs= github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251108023427-891f5bb03061/go.mod h1:sRDdfB9W3pU52PnpjJ9RuMVsg/UQ5iLNlVfbRpb250o= github.com/openshift/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20251108023427-891f5bb03061 h1:IMHDnaXsxNDz4MCgmj6F5odsJgypLWPaLYtVtiI6tsI= diff --git a/openshift/tests-extension/hack/ocp-replace.sh b/openshift/tests-extension/hack/ocp-replace.sh new file mode 100755 index 000000000..2da255ecd --- /dev/null +++ b/openshift/tests-extension/hack/ocp-replace.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Update go.mod replaces to the latest (or provided) OpenShift Kubernetes fork commit. +# Usage: +# ./ocp-replace-exact.sh # uses latest commit on OCP fork default branch +# ./ocp-replace-exact.sh # uses specific commit + +OCP_REPO="github.com/openshift/kubernetes" +OCP_REMOTE="https://github.com/openshift/kubernetes.git" + +# OCP Ginkgo fork pin (as in your go.mod) +GINKGO_FORK="github.com/openshift/onsi-ginkgo/v2" +GINKGO_VERSION="v2.6.1-0.20250416174521-4eb003743b54" + +# EXACT list you provided (all are staging modules EXCEPT the root "k8s.io/kubernetes"). +STAGING_MODULES=( + k8s.io/api + k8s.io/apiextensions-apiserver + k8s.io/apimachinery + k8s.io/apiserver + k8s.io/cli-runtime + k8s.io/client-go + k8s.io/cloud-provider + k8s.io/cluster-bootstrap + k8s.io/code-generator + k8s.io/component-base + k8s.io/component-helpers + k8s.io/controller-manager + k8s.io/cri-api + k8s.io/cri-client + k8s.io/csi-translation-lib + k8s.io/dynamic-resource-allocation + k8s.io/endpointslice + k8s.io/externaljwt + k8s.io/kube-aggregator + k8s.io/kube-controller-manager + k8s.io/kube-proxy + k8s.io/kube-scheduler + k8s.io/kubectl + k8s.io/kubelet + k8s.io/metrics + k8s.io/mount-utils + k8s.io/pod-security-admission + k8s.io/sample-apiserver + k8s.io/sample-cli-plugin + k8s.io/sample-controller +) + +die(){ echo "error: $*" >&2; exit 1; } +need(){ command -v "$1" >/dev/null 2>&1 || die "missing command: $1"; } + +need go +need git +[[ -f go.mod ]] || die "go.mod not found; run this from your repository root" + +# Accept a commit SHA or use latest on default branch. +OCP_COMMIT="${1:-}" +if [[ -z "$OCP_COMMIT" ]]; then + echo "Discovering latest OCP commit from ${OCP_REMOTE}…" + OCP_COMMIT="$(git ls-remote "$OCP_REMOTE" HEAD | awk '{print $1}')" + [[ -n "$OCP_COMMIT" ]] || die "failed to discover latest commit from $OCP_REMOTE" +else + echo "Using provided OCP commit: ${OCP_COMMIT}" +fi + +# Resolve canonical pseudo-version (v0.0.0-YYYYMMDDHHMMSS-) for that commit. +# The module declares itself as k8s.io/kubernetes, so we can't use github.com/openshift/kubernetes +# directly. Instead, we'll construct the pseudo-version from git information. +export GOPROXY="https://proxy.golang.org,direct" + +# The script uses GOPRIVATE and GONOSUMDB internally during version resolution, but the resulting go.mod and go.sum +# files work without those environment variables, which is required for the downstreaming process with +# operator-framework-tooling. +export GOPRIVATE="github.com/openshift/*" +export GONOSUMDB="github.com/openshift/*" + +echo "Resolving pseudo-version for k8s.io/kubernetes@${OCP_COMMIT}…" + +# Clone the repo temporarily to get commit timestamp +TMP_DIR=$(mktemp -d) +trap "rm -rf ${TMP_DIR}" EXIT + +git clone --depth=1 "${OCP_REMOTE}" "${TMP_DIR}" >/dev/null 2>&1 +cd "${TMP_DIR}" +git checkout "${OCP_COMMIT}" >/dev/null 2>&1 || { + cd - >/dev/null + die "could not checkout commit ${OCP_COMMIT}" +} + +# Get commit timestamp in the format YYYYMMDDHHMMSS +COMMIT_TIME=$(git log -1 --format=%ct "${OCP_COMMIT}") +COMMIT_DATE=$(date -u -r "${COMMIT_TIME}" +%Y%m%d%H%M%S 2>/dev/null || date -u -d "@${COMMIT_TIME}" +%Y%m%d%H%M%S 2>/dev/null || echo "") +SHORT_SHA="${OCP_COMMIT:0:12}" + +cd - >/dev/null +rm -rf "${TMP_DIR}" +trap - EXIT + +if [[ -z "$COMMIT_DATE" ]]; then + die "could not get commit timestamp for ${OCP_COMMIT}" +fi + +# Construct pseudo-version: v0.0.0-YYYYMMDDHHMMSS- +OCP_VERSION="v0.0.0-${COMMIT_DATE}-${SHORT_SHA}" +echo "Resolved OCP version: ${OCP_VERSION}" + +echo "Updating go.mod replaces…" + +# Clean up any existing replace directives for k8s.io modules first +# This ensures we start with a clean slate +for m in k8s.io/kubernetes "${STAGING_MODULES[@]}"; do + go mod edit -dropreplace "${m}" 2>/dev/null || true +done +go mod edit -dropreplace "github.com/onsi/ginkgo/v2" 2>/dev/null || true + +# 1) OCP Ginkgo fork +go mod edit -replace "github.com/onsi/ginkgo/v2=${GINKGO_FORK}@${GINKGO_VERSION}" + +# 2) Root k8s.io/kubernetes → OCP fork +go mod edit -replace "k8s.io/kubernetes=${OCP_REPO}@${OCP_VERSION}" + +# 3) All staging modules → staging path in the OCP fork at the same version +for m in "${STAGING_MODULES[@]}"; do + go mod edit -replace "${m}=${OCP_REPO}/staging/src/${m}@${OCP_VERSION}" +done + +# 4) Tidy up +go mod tidy +go mod vendor + +echo +echo "Done." +echo " OCP commit: ${OCP_COMMIT}" +echo " OCP version: ${OCP_VERSION}" +echo "go.mod and go.sum vendor/ updated." diff --git a/openshift/tests-extension/vendor/modules.txt b/openshift/tests-extension/vendor/modules.txt index 37107b188..cd7594187 100644 --- a/openshift/tests-extension/vendor/modules.txt +++ b/openshift/tests-extension/vendor/modules.txt @@ -1139,7 +1139,7 @@ k8s.io/kubectl/pkg/util/podutils ## explicit; go 1.24.0 k8s.io/kubelet/pkg/apis k8s.io/kubelet/pkg/apis/stats/v1alpha1 -# k8s.io/kubernetes v1.34.1 => github.com/openshift/kubernetes v1.30.1-0.20251108023427-891f5bb03061 +# k8s.io/kubernetes v1.34.1 => github.com/openshift/kubernetes v0.0.0-20251108023427-891f5bb03061 ## explicit; go 1.24.0 k8s.io/kubernetes/pkg/api/legacyscheme k8s.io/kubernetes/pkg/api/service @@ -1233,7 +1233,7 @@ sigs.k8s.io/structured-merge-diff/v6/value ## explicit; go 1.22 sigs.k8s.io/yaml # github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20250416174521-4eb003743b54 -# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 +# k8s.io/kubernetes => github.com/openshift/kubernetes v0.0.0-20251108023427-891f5bb03061 # k8s.io/api => github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251108023427-891f5bb03061 # k8s.io/apiextensions-apiserver => github.com/openshift/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20251108023427-891f5bb03061 # k8s.io/apimachinery => github.com/openshift/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20251108023427-891f5bb03061 @@ -1258,7 +1258,6 @@ sigs.k8s.io/yaml # k8s.io/kube-scheduler => github.com/openshift/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20251108023427-891f5bb03061 # k8s.io/kubectl => github.com/openshift/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20251108023427-891f5bb03061 # k8s.io/kubelet => github.com/openshift/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20251108023427-891f5bb03061 -# k8s.io/kubernetes => github.com/openshift/kubernetes v1.30.1-0.20251108023427-891f5bb03061 # k8s.io/metrics => github.com/openshift/kubernetes/staging/src/k8s.io/metrics v0.0.0-20251108023427-891f5bb03061 # k8s.io/mount-utils => github.com/openshift/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20251108023427-891f5bb03061 # k8s.io/pod-security-admission => github.com/openshift/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20251108023427-891f5bb03061