Repository: kubernetes/kubernetes
Pull request #130760: Cleanup CI integration scripts
Author: login: BenTheElder
Labels: name: priority/backlog
description: Higher priority than priority/awaiting-more-evidence.
name: kind/cleanup
description: Categorizes issue or PR as related to cleaning up code, process, or technical debt.
name: lgtm
description: "Looks good to me", indicates that a PR is ready to be merged.
name: size/M
description: Denotes a PR that changes 30-99 lines, ignoring generated files.
name: release-note-none
description: Denotes a PR that doesn't merit a release note.
name: approved
description: Indicates a PR has been approved by an approver from all required OWNERS files.
name: cncf-cla: yes
description: Indicates the PR's author has signed the CNCF CLA.
name: sig/testing
description: Categorizes an issue or PR as relevant to SIG Testing.
name: triage/accepted
description: Indicates an issue or PR is ready to be actively worked on.
Created: 2025-03-12T21:19:17Z | Merged: 2025-03-13T23:05:53Z

<!--  Thanks for sending a pull request!  Here are some tips for you:

1. If this is your first time, please read our contributor guidelines: https://git.k8s.io/community/contributors/guide/first-contribution.md#your-first-contribution and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request. For reference on required PR/issue labels, read here:
https://git.k8s.io/community/contributors/devel/sig-release/release.md#issuepr-kind-label
3. Ensure you have added or ran the appropriate tests for your PR: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
4. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
5. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
-->

#### What type of PR is this?

<!--
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature

Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
/kind cleanup

#### What this PR does / why we need it:

Most of what these scripts do at this point is redundant or bad practice

I've done:
- stop setting ARTIFACTS from WORKSPACE, CI handles setting ARTIFACTS and WORKSPACE isn't used anymore (bazel?)
- stop cd-ing GOPATH, CI sets the working dir already and local users won't necessarily have GOPATH
- stop clobbering PATH with hardcoded assumptions, source install-etcd.sh instead (which updates PATH)
- don't redundantly set KUBE_COVER to the default
- pass logging env inline so the command can be pasted locally
- set -x so the command is visible
- add TODO about needing a wrapper script just to call install-etcd



#### Which issue(s) this PR fixes:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
-->
Fixes #

#### Special notes for your reviewer:

builds on top of https://github.com/kubernetes/kubernetes/pull/130758 because I'd prioritize merging that smaller change first.

#### Does this PR introduce a user-facing change?
<!--
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".

For more information on release notes see: https://git.k8s.io/community/contributors/guide/release-notes.md
-->
```release-note
NONE
```

#### Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

<!--
This section can be blank if this pull request does not require a release note.

When adding links which point to resources within git repositories, like
KEPs or supporting documentation, please reference a specific commit and avoid
linking directly to the master branch. This ensures that links reference a
specific point in time, rather than a document that may change over time.

See here for guidance on getting permanent links to files: https://help.github.com/en/articles/getting-permanent-links-to-files

Please use the following format for linking documentation:
- [KEP]: <link>
- [Usage]: <link>
- [Other doc]: <link>
-->
```docs

```



Diff:
diff --git a/hack/install-etcd.sh b/hack/install-etcd.sh
index fb4bed85364b4..5acb177babde0 100755
--- a/hack/install-etcd.sh
+++ b/hack/install-etcd.sh
@@ -27,4 +27,4 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
 
 FOUND="$(echo "${PATH}" | sed 's/:/\n/g' | grep -q "^${KUBE_ROOT}/third_party/etcd$" || true)"
 kube::etcd::install
-test -n "${FOUND}" || echo "  PATH=\"\$PATH:${KUBE_ROOT}/third_party/etcd\""
+test -n "${FOUND}" || echo "export PATH=\"\${PATH}:${KUBE_ROOT}/third_party/etcd\""
diff --git a/hack/jenkins/benchmark-dockerized.sh b/hack/jenkins/benchmark-dockerized.sh
index 2adda151df3e9..a01dee722797d 100755
--- a/hack/jenkins/benchmark-dockerized.sh
+++ b/hack/jenkins/benchmark-dockerized.sh
@@ -48,7 +48,6 @@ if [ -n "${KUBE_HACK_TOOLS_GOTOOLCHAIN:-}" ]; then
   hack_tools_gotoolchain="${KUBE_HACK_TOOLS_GOTOOLCHAIN}";
 fi
 GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "${KUBE_ROOT}/hack/tools" install github.com/cespare/prettybench
-GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "${KUBE_ROOT}/hack/tools" install gotest.tools/gotestsum
 
 # Disable the Go race detector.
 export KUBE_RACE=" "
diff --git a/hack/jenkins/test-cmd-dockerized.sh b/hack/jenkins/test-cmd-dockerized.sh
index cc7ed476c6c7d..07baa4f7a07b6 100755
--- a/hack/jenkins/test-cmd-dockerized.sh
+++ b/hack/jenkins/test-cmd-dockerized.sh
@@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
-
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
-
-cd "${GOPATH}/src/k8s.io/kubernetes"
-
-./hack/install-etcd.sh
+# TODO: make test-cmd should handle this automatically
+source ./hack/install-etcd.sh
 
 make test-cmd
 
diff --git a/hack/jenkins/test-dockerized.sh b/hack/jenkins/test-dockerized.sh
index 0bc747cb3487e..72b6884b30b83 100755
--- a/hack/jenkins/test-dockerized.sh
+++ b/hack/jenkins/test-dockerized.sh
@@ -19,32 +19,14 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd and test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd and test-integration, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration should handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-hack_tools_gotoolchain="${GOTOOLCHAIN:-}"
-if [ -n "${KUBE_HACK_TOOLS_GOTOOLCHAIN:-}" ]; then
-  hack_tools_gotoolchain="${KUBE_HACK_TOOLS_GOTOOLCHAIN}";
-fi
-GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "./hack/tools" install gotest.tools/gotestsum
-
-# Disable coverage report
-export KUBE_COVER="n"
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
 # Save the verbose stdout as well.
 export KUBE_KEEP_VERBOSE_TEST_OUTPUT=y
 export LOG_LEVEL=4
-
-cd "${GOPATH}/src/k8s.io/kubernetes"
-
-./hack/install-etcd.sh
-
 make test-cmd
 make test-integration
diff --git a/hack/jenkins/test-integration-dockerized.sh b/hack/jenkins/test-integration-dockerized.sh
index 6b9adff8dfaff..ec856abc3bd4c 100755
--- a/hack/jenkins/test-integration-dockerized.sh
+++ b/hack/jenkins/test-integration-dockerized.sh
@@ -19,27 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-integration
+# This script is intended to be run from prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration should handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-go -C "./hack/tools" install gotest.tools/gotestsum
-
-# Disable coverage report
-export KUBE_COVER="n"
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
-# Save the verbose stdout as well.
-export KUBE_KEEP_VERBOSE_TEST_OUTPUT=y
-export LOG_LEVEL=4
-
-cd "${GOPATH}/src/k8s.io/kubernetes"
-
-./hack/install-etcd.sh
-
-make test-integration
+make test-integration KUBE_KEEP_VERBOSE_TEST_OUTPUT=y LOG_LEVEL=4


Reviews:
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:19:45Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:20:30Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:20:53Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:21:13Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:22:45Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:23:35Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:30:00Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T21:32:51Z
user: login: aojea
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-13T19:32:10Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-13T19:35:22Z
user: login: BenTheElder
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-13T19:36:16Z

Review comments:
diff_hunk: @@ -19,33 +19,14 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd and test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd and test-integration, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration should handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-hack_tools_gotoolchain="${GOTOOLCHAIN:-}"
-if [ -n "${KUBE_HACK_TOOLS_GOTOOLCHAIN:-}" ]; then
-  hack_tools_gotoolchain="${KUBE_HACK_TOOLS_GOTOOLCHAIN}";
-fi
-GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "./hack/tools" install gotest.tools/gotestsum
-
-# Disable coverage report
-export KUBE_COVER="n"
path: hack/jenkins/test-dockerized.sh
user: login: BenTheElder
body: this is the default
created_at: 2025-03-12T21:19:45Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
path: hack/jenkins/test-cmd-dockerized.sh
user: login: BenTheElder
body: we don't need to do this, just `source ./hack/install-etcd.sh`, `kube::etcd::install` will update PATH, de-duping the PATH computation
created_at: 2025-03-12T21:20:30Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
-
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
path: hack/jenkins/test-cmd-dockerized.sh
user: login: BenTheElder
body: this is useless, CI always sets ARTIFACTS, and locally you won't have either set. WORKSPACE was a bazel-ism
created_at: 2025-03-12T21:20:53Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
-
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
-
-cd "${GOPATH}/src/k8s.io/kubernetes"
path: hack/jenkins/test-cmd-dockerized.sh
user: login: BenTheElder
body: this is useless, CI already sets the working directory to the repo clone

worse, it assumes GOPATH for the checkout
created_at: 2025-03-12T21:21:13Z
author_association: MEMBER
diff_hunk: @@ -19,33 +19,14 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd and test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd and test-integration, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration should handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-hack_tools_gotoolchain="${GOTOOLCHAIN:-}"
-if [ -n "${KUBE_HACK_TOOLS_GOTOOLCHAIN:-}" ]; then
-  hack_tools_gotoolchain="${KUBE_HACK_TOOLS_GOTOOLCHAIN}";
-fi
-GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "./hack/tools" install gotest.tools/gotestsum
path: hack/jenkins/test-dockerized.sh
user: login: BenTheElder
body: this should be useless, or if not, we should fix that, `make test` automatically handles gotestsum, I think we still have to add that to these (PR is WIP ....)
created_at: 2025-03-12T21:22:45Z
author_association: MEMBER
diff_hunk: @@ -19,28 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-integration
+# This script is intended to be run from prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration shoudl handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-go -C "./hack/tools" install gotest.tools/gotestsum
-
-# Disable coverage report
-export KUBE_COVER="n"
-# Set artifacts directory
-export ARTIFACTS=${ARTIFACTS:-"${WORKSPACE}/artifacts"}
-# Save the verbose stdout as well.
-export KUBE_KEEP_VERBOSE_TEST_OUTPUT=y
-export KUBE_INTEGRATION_TEST_MAX_CONCURRENCY=4
-export LOG_LEVEL=4
-
-cd "${GOPATH}/src/k8s.io/kubernetes"
-
-./hack/install-etcd.sh
-
-make test-integration
+make test-integration KUBE_KEEP_VERBOSE_TEST_OUTPUT=y LOG_LEVEL=4
path: hack/jenkins/test-integration-dockerized.sh
user: login: BenTheElder
body: passing env this way makes it a pasteable command to produce the same output locally
created_at: 2025-03-12T21:23:35Z
author_association: MEMBER
diff_hunk: @@ -19,33 +19,14 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd and test-integration,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd and test-integration, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
+# TODO: make test-integration should handle this automatically
+source ./hack/install-etcd.sh
 
-# Install tools we need
-hack_tools_gotoolchain="${GOTOOLCHAIN:-}"
-if [ -n "${KUBE_HACK_TOOLS_GOTOOLCHAIN:-}" ]; then
-  hack_tools_gotoolchain="${KUBE_HACK_TOOLS_GOTOOLCHAIN}";
-fi
-GOTOOLCHAIN="${hack_tools_gotoolchain}" go -C "./hack/tools" install gotest.tools/gotestsum
path: hack/jenkins/test-dockerized.sh
user: login: BenTheElder
body: We ultimately run gotestsum via `make test` so we don't need this.
created_at: 2025-03-12T21:30:00Z
author_association: MEMBER
diff_hunk: @@ -27,4 +27,4 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
 
 FOUND="$(echo "${PATH}" | sed 's/:/\n/g' | grep -q "^${KUBE_ROOT}/third_party/etcd$" || true)"
 kube::etcd::install
-test -n "${FOUND}" || echo "  PATH=\"\$PATH:${KUBE_ROOT}/third_party/etcd\""
+test -n "${FOUND}" || echo "export PATH=\"\${PATH}:${KUBE_ROOT}/third_party/etcd\""
path: hack/install-etcd.sh
user: login: BenTheElder
body: this is more useful when pasted by the user, and it also hints that we've exported it if you've sourced the script.
created_at: 2025-03-12T21:32:51Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
path: hack/jenkins/test-cmd-dockerized.sh
user: login: aojea
body: and the gopath bin things?
created_at: 2025-03-13T19:32:10Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
path: hack/jenkins/test-cmd-dockerized.sh
user: login: BenTheElder
body: The CI image already has PATH setup reasonably aside from installing etcd, which is the correct place to handle this. We handle etcd path below.

You can also seem that the CI jobs pass after this change: 
https://prow.k8s.io/view/gs/kubernetes-ci-logs/pr-logs/pull/130760/pull-kubernetes-integration/1900251659217408000
https://prow.k8s.io/view/gs/kubernetes-ci-logs/pr-logs/pull/130760/pull-kubernetes-cmd/1900251658978332672
created_at: 2025-03-13T19:35:22Z
author_association: MEMBER
diff_hunk: @@ -19,20 +19,11 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
-# Runs test-cmd,
-# producing JUnit-style XML test
-# reports in ${WORKSPACE}/artifacts. This script is intended to be run from
-# kubekins-test container with a kubernetes repo mapped in. See
-# k8s.io/test-infra/scenarios/kubernetes_verify.py
+# Runs test-cmd, intended to be run in prow.k8s.io
+set -x;
 
-export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
path: hack/jenkins/test-cmd-dockerized.sh
user: login: BenTheElder
body: When Kubernetes installs a tool into GOPATH/bin, it does it inside of a script, and it does it in a temporary GOPATH under _output or similar, while setting PATH inside that script.

the install etcd script is an outlier, it doesn't install from source though, and it's old
created_at: 2025-03-13T19:36:16Z
author_association: MEMBER

PR comments:
user: login: k8s-ci-robot
created_at: 2025-03-12T21:19:33Z
body: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes/kubernetes/pull/130760#" title="Author self-approved">BenTheElder</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubernetes%2Fkubernetes).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[hack/OWNERS](https://github.com/kubernetes/kubernetes/blob/master/hack/OWNERS)~~ [BenTheElder]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
author_association: CONTRIBUTOR
user: login: BenTheElder
created_at: 2025-03-13T18:27:25Z
body: /cc @aojea @pohly 
Nearly all of these "CI wrapper scripts" for integration / test-cmd is unnecessary and/or counter-productive, this PR eliminates nearly all of it.

They continue to pass, I had to push a spelling fix, and there are some unrelated flakes in other jobs incl https://github.com/kubernetes/kubernetes/issues/130018#issuecomment-2722337875
author_association: MEMBER
user: login: BenTheElder
created_at: 2025-03-13T19:06:33Z
body: /restest
flake: https://prow.k8s.io/view/gs/kubernetes-ci-logs/pr-logs/pull/130760/pull-kubernetes-e2e-kind/1900251659280322560
author_association: MEMBER
user: login: aojea
created_at: 2025-03-13T19:34:09Z
body: /lgtm
author_association: MEMBER
user: login: k8s-ci-robot
created_at: 2025-03-13T19:34:16Z
body: LGTM label has been added.  <details>Git tree hash: 2291c313b61371f81ccef96fc23b3c85228148c0</details>
author_association: CONTRIBUTOR
user: login: BenTheElder
created_at: 2025-03-13T19:49:33Z
body: /retest
https://prow.k8s.io/view/gs/kubernetes-ci-logs/pr-logs/pull/130760/pull-kubernetes-e2e-kind/1900251659280322560

That's _twice_ in a row now with this garbage colletor test, filing a bug
author_association: MEMBER
user: login: BenTheElder
created_at: 2025-03-13T19:51:05Z
body: No it's not, the retest didn't take, that's the same run. Ok.

Triage shows it has only failed once more in recent history https://storage.googleapis.com/k8s-triage/index.html?pr=1&text=Garbage%20collector%20should%20support%20orphan%20deletion%20of%20custom%20resources
author_association: MEMBER
user: login: BenTheElder
created_at: 2025-03-13T21:24:23Z
body: /sig testing
author_association: MEMBER
user: login: BenTheElder
created_at: 2025-03-13T21:24:41Z
body: /triage accepted
/priority backlog
author_association: MEMBER