Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion openshift/tests-extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
#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.
```
99 changes: 63 additions & 36 deletions openshift/tests-extension/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions openshift/tests-extension/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
136 changes: 136 additions & 0 deletions openshift/tests-extension/hack/ocp-replace.sh
Original file line number Diff line number Diff line change
@@ -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 <commitSHA> # 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-<sha>) 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-<short-sha>
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."
5 changes: 2 additions & 3 deletions openshift/tests-extension/vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down