Skip to content

Commit 9160d31

Browse files
committed
Fix: refine functions
Signed-off-by: Penghao <pewang@redhat.com>
1 parent 9fb036e commit 9160d31

File tree

1 file changed

+92
-50
lines changed

1 file changed

+92
-50
lines changed

prow.sh

Lines changed: 92 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -555,14 +555,6 @@ list_gates () (
555555
# with https://kind.sigs.k8s.io/docs/user/configuration/#runtime-config
556556
list_api_groups () (
557557
set -f; IFS=','
558-
559-
# If the volumegroupsnapshot gate is enabled, output required API groups
560-
if ${CSI_PROW_ENABLE_GROUP_SNAPSHOT}; then
561-
echo ' "api/ga": "true"'
562-
echo ' "storage.k8s.io/v1alpha1": "true"'
563-
echo ' "storage.k8s.io/v1beta1": "true"'
564-
fi
565-
566558
# Ignore: Double quote to prevent globbing and word splitting.
567559
# shellcheck disable=SC2086
568560
set -- $1
@@ -856,20 +848,20 @@ inject_vgs_feature_gate() {
856848
fi
857849
}
858850

859-
# Replace controller image based on the deployment mode
851+
# Replace the snapshot controller image based on the test mode
860852
# Arguments:
861853
# $1: yaml content
862-
# $2: mode ("external-snapshotter", "canary", or "default")
863-
# $3: new_tag (for external-snapshotter mode)
854+
# $2: mode ("local-build", "canary", or "default")
855+
# $3: new_tag (for local-build mode)
864856
# $4: registry (for canary mode)
865-
replace_controller_image() {
857+
replace_snapshot_controller_image() {
866858
local yaml="$1"
867859
local mode="$2"
868860
local new_tag="${3:-}"
869861
local registry="${4:-}"
870862

871863
case "$mode" in
872-
external-snapshotter)
864+
local-build)
873865
# Replace with snapshot-controller:new_tag
874866
echo "$yaml" | sed -E \
875867
"s|^([[:space:]]*image: )(.*snapshot-controller):[^[:space:]]*|\1snapshot-controller:${new_tag}|"
@@ -936,7 +928,7 @@ install_snapshot_controller() {
936928
# Replace image in SNAPSHOT_CONTROLLER_YAML with snapshot-controller:csiprow and deploy
937929
# NOTE: This logic is similar to the logic here:
938930
# https://github.com/kubernetes-csi/csi-driver-host-path/blob/v1.4.0/deploy/util/deploy-hostpath.sh#L155
939-
modified="$(replace_controller_image "$yaml" "external-snapshotter" "$NEW_TAG" | inject_vgs_feature_gate)"
931+
modified="$(replace_snapshot_controller_image "$yaml" "local-build" "$NEW_TAG" | inject_vgs_feature_gate)"
940932
diff <(echo "$yaml") <(echo "$modified")
941933
if ! echo "$modified" | kubectl apply -f -; then
942934
echo "modified version of ${SNAPSHOT_CONTROLLER_YAML}:"
@@ -945,7 +937,7 @@ install_snapshot_controller() {
945937
fi
946938
elif [ "${CSI_PROW_DRIVER_CANARY}" = "canary" ]; then
947939
echo "Deploying snapshot-controller from ${SNAPSHOT_CONTROLLER_YAML} with canary images."
948-
modified="$(replace_controller_image "$yaml" "canary" "" "${CSI_PROW_DRIVER_CANARY_REGISTRY}" | inject_vgs_feature_gate)"
940+
modified="$(replace_snapshot_controller_image "$yaml" "canary" "" "${CSI_PROW_DRIVER_CANARY_REGISTRY}" | inject_vgs_feature_gate)"
949941
diff <(echo "$yaml") <(echo "$modified")
950942
if ! echo "$modified" | kubectl apply -f -; then
951943
echo "modified version of ${SNAPSHOT_CONTROLLER_YAML}:"
@@ -955,7 +947,7 @@ install_snapshot_controller() {
955947
else
956948
echo "kubectl apply -f $SNAPSHOT_CONTROLLER_YAML"
957949
# Replace snapshot-controller container tag to make it consistent with CSI_SNAPSHOTTER_VERSION
958-
modified="$(replace_controller_image "$yaml" "default" | inject_vgs_feature_gate)"
950+
modified="$(replace_snapshot_controller_image "$yaml" "default" | inject_vgs_feature_gate)"
959951
diff <(echo "$yaml") <(echo "$modified")
960952
if ! echo "$modified" | kubectl apply -f -; then
961953
echo "modified version of ${SNAPSHOT_CONTROLLER_YAML}:"
@@ -1060,23 +1052,24 @@ install_e2e () {
10601052
if sidecar_tests_enabled; then
10611053
run_with_go "${CSI_PROW_GO_VERSION_BUILD}" go test -c -o "${CSI_PROW_WORK}/e2e-local.test" "${CSI_PROW_SIDECAR_E2E_IMPORT_PATH}"
10621054
fi
1063-
1055+
1056+
local e2e_src_dir
10641057
# In kubernetes presubmit do not need clone the src
10651058
if [[ $(basename "${REPO_DIR}") == "kubernetes" ]]; then
10661059
echo "Using existing repo at ${REPO_DIR}"
1067-
E2E_SRC_DIR="${REPO_DIR}"
1060+
e2e_src_dir="${REPO_DIR}"
10681061
else
10691062
git_checkout "${CSI_PROW_E2E_REPO}" "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" "${CSI_PROW_E2E_VERSION}" --depth=1
1070-
E2E_SRC_DIR="${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}"
1063+
e2e_src_dir="${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}"
10711064
fi
10721065

10731066
if [ "${CSI_PROW_E2E_IMPORT_PATH}" = "k8s.io/kubernetes" ]; then
10741067
patch_kubernetes "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" "${CSI_PROW_WORK}" &&
1075-
go_version="${CSI_PROW_GO_VERSION_E2E:-$(go_version_for_kubernetes "${E2E_SRC_DIR}" "${CSI_PROW_E2E_VERSION}")}" &&
1076-
run_with_go "$go_version" make WHAT=test/e2e/e2e.test "-C${E2E_SRC_DIR}" &&
1077-
ln -s "${E2E_SRC_DIR}/_output/bin/e2e.test" "${CSI_PROW_WORK}" &&
1078-
run_with_go "$go_version" make WHAT=vendor/github.com/onsi/ginkgo/ginkgo "-C${E2E_SRC_DIR}" &&
1079-
ln -s "${E2E_SRC_DIR}/_output/bin/ginkgo" "${CSI_PROW_BIN}"
1068+
go_version="${CSI_PROW_GO_VERSION_E2E:-$(go_version_for_kubernetes "${e2e_src_dir}" "${CSI_PROW_E2E_VERSION}")}" &&
1069+
run_with_go "$go_version" make WHAT=test/e2e/e2e.test "-C${e2e_src_dir}" &&
1070+
ln -s "${e2e_src_dir}/_output/bin/e2e.test" "${CSI_PROW_WORK}" &&
1071+
run_with_go "$go_version" make WHAT=vendor/github.com/onsi/ginkgo/ginkgo "-C${e2e_src_dir}" &&
1072+
ln -s "${e2e_src_dir}/_output/bin/ginkgo" "${CSI_PROW_BIN}"
10801073
else
10811074
run_with_go "${CSI_PROW_GO_VERSION_E2E}" go test -c -o "${CSI_PROW_WORK}/e2e.test" "${CSI_PROW_E2E_IMPORT_PATH}/test/e2e"
10821075
fi
@@ -1103,7 +1096,16 @@ run_with_loggers () (
11031096

11041097
# Invokes the filter-junit.go tool.
11051098
run_filter_junit () {
1106-
run_with_go "${CSI_PROW_GO_VERSION_BUILD}" go run "${RELEASE_TOOLS_ROOT}/filter-junit.go" "$@"
1099+
local go_version ksrc version
1100+
go_version="${CSI_PROW_GO_VERSION_BUILD}"
1101+
# Detect if running inside k/k repo
1102+
if [[ $(basename "${REPO_DIR}") == "kubernetes" ]]; then
1103+
echo "Using Kubernetes source from CI checkout ..."
1104+
ksrc="${REPO_DIR}"
1105+
version="$(git -C "$ksrc" rev-parse HEAD)"
1106+
go_version="$(go_version_for_kubernetes "$ksrc" "$version")" || die "cannot proceed without knowing Go version for run_filter_junit"
1107+
fi
1108+
run_with_go "${go_version}" go run "${RELEASE_TOOLS_ROOT}/filter-junit.go" "$@"
11071109
}
11081110

11091111
# Runs the E2E test suite in a sub-shell.
@@ -1119,33 +1121,68 @@ run_e2e () (
11191121
# the full Kubernetes E2E testsuite while only running a few tests.
11201122
# shellcheck disable=SC2329
11211123
move_junit () {
1122-
# shellcheck disable=SC2317
1123-
FILTER='External.Storage|CSI.mock.volume'
1124-
# shellcheck disable=SC2317
1125-
if [ "${CSI_PROW_ENABLE_GROUP_SNAPSHOT}" = "true" ]; then
1126-
FILTER="${FILTER}|\[Feature:volumegroupsnapshot\]"
1127-
fi
1128-
11291124
# shellcheck disable=SC2317
11301125
if ls "${ARTIFACTS}"/junit_[0-9]*.xml 2>/dev/null >/dev/null; then
11311126
mkdir -p "${ARTIFACTS}/junit/${name}" &&
1132-
mkdir -p "${ARTIFACTS}/junit/steps" &&
1133-
run_filter_junit -t="${FILTER}" -o "${ARTIFACTS}/junit/steps/junit_${name}.xml" "${ARTIFACTS}"/junit_[0-9]*.xml &&
1127+
mkdir -p "${ARTIFACTS}/junit/steps"
1128+
1129+
# Skip filter-junit for in-tree (VGS) runs, because k/k already produces clean JUnit
1130+
if [[ "${name}" == "vgs" ]]; then
1131+
echo "Skipping filter-junit for ${name} (in-tree tests already generate clean JUnit)"
1132+
mv "${ARTIFACTS}"/junit_[0-9]*.xml "${ARTIFACTS}/junit/${name}/"
1133+
else
1134+
# Run filtering for CSI tests to remove duplicates/skipped cases
1135+
run_filter_junit -t="External.Storage|CSI.mock.volume" \
1136+
-o "${ARTIFACTS}/junit/steps/junit_${name}.xml" \
1137+
"${ARTIFACTS}"/junit_[0-9]*.xml &&
11341138
mv "${ARTIFACTS}"/junit_[0-9]*.xml "${ARTIFACTS}/junit/${name}/"
1139+
fi
11351140
fi
11361141
}
11371142
trap move_junit EXIT
11381143

1139-
if [ "${name}" == "local" ]; then
1140-
cd "${GOPATH}/src/${CSI_PROW_SIDECAR_E2E_PATH}" &&
1141-
run_with_loggers env KUBECONFIG="$KUBECONFIG" KUBE_TEST_REPO_LIST="$(if [ -e "${CSI_PROW_WORK}/e2e-repo-list" ]; then echo "${CSI_PROW_WORK}/e2e-repo-list"; fi)" ginkgo --timeout="${CSI_PROW_GINKGO_TIMEOUT}" -v "$@" "${CSI_PROW_WORK}/e2e-local.test" -- -report-dir "${ARTIFACTS}" -report-prefix local
1142-
elif [ "${CSI_PROW_ENABLE_GROUP_SNAPSHOT}" = "true" ] && [ "${name}" == "parallel-features" ]; then
1143-
cd "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" &&
1144-
run_with_loggers env KUBECONFIG="$KUBECONFIG" KUBE_TEST_REPO_LIST="$(if [ -e "${CSI_PROW_WORK}/e2e-repo-list" ]; then echo "${CSI_PROW_WORK}/e2e-repo-list"; fi)" ginkgo --timeout="${CSI_PROW_GINKGO_TIMEOUT}" -v "$@" "${CSI_PROW_WORK}/e2e.test" -- -report-dir "${ARTIFACTS}" -report-prefix vgs
1144+
1145+
# Only set up move_junit for non-VGS tests
1146+
if [ "$name" != "vgs" ]; then
1147+
trap move_junit EXIT
1148+
fi
1149+
1150+
# Determine ginkgo target and options
1151+
local ginkgo_target=""
1152+
local extra_args=""
1153+
local e2e_src_dir=""
1154+
local args=()
1155+
1156+
if [[ $(basename "${REPO_DIR}") == "kubernetes" ]]; then
1157+
e2e_src_dir="${REPO_DIR}"
11451158
else
1146-
cd "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" &&
1147-
run_with_loggers env KUBECONFIG="$KUBECONFIG" KUBE_TEST_REPO_LIST="$(if [ -e "${CSI_PROW_WORK}/e2e-repo-list" ]; then echo "${CSI_PROW_WORK}/e2e-repo-list"; fi)" ginkgo --timeout="${CSI_PROW_GINKGO_TIMEOUT}" -v "$@" "${CSI_PROW_WORK}/e2e.test" -- -report-dir "${ARTIFACTS}" -storage.testdriver="${CSI_PROW_WORK}/test-driver.yaml"
1159+
e2e_src_dir="${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}"
11481160
fi
1161+
1162+
case "$name" in
1163+
local)
1164+
ginkgo_target="${CSI_PROW_WORK}/e2e-local.test"
1165+
extra_args="-report-prefix=local"
1166+
cd "${GOPATH}/src/${CSI_PROW_SIDECAR_E2E_PATH}" || die "cd ${GOPATH}/src/${CSI_PROW_SIDECAR_E2E_PATH} failed"
1167+
;;
1168+
vgs)
1169+
# VGS tests are in in-tree/core tests; do NOT pass -storage.testdriver
1170+
ginkgo_target="${CSI_PROW_WORK}/e2e.test"
1171+
cd "${e2e_src_dir}" || die "cd ${e2e_src_dir} failed"
1172+
;;
1173+
*)
1174+
# Default: CSI external driver tests
1175+
ginkgo_target="${CSI_PROW_WORK}/e2e.test"
1176+
extra_args="-storage.testdriver=${CSI_PROW_WORK}/test-driver.yaml"
1177+
cd "${e2e_src_dir}" || die "cd ${e2e_src_dir} failed"
1178+
;;
1179+
esac
1180+
1181+
[ -n "$extra_args" ] && args+=("$extra_args")
1182+
run_with_loggers env \
1183+
KUBECONFIG="$KUBECONFIG" \
1184+
KUBE_TEST_REPO_LIST="$(if [ -e "${CSI_PROW_WORK}/e2e-repo-list" ]; then echo "${CSI_PROW_WORK}/e2e-repo-list"; fi)" \
1185+
ginkgo --timeout="${CSI_PROW_GINKGO_TIMEOUT}" -v "$@" "$ginkgo_target" -- -report-dir "${ARTIFACTS}" "${args[@]}"
11491186
)
11501187

11511188
# Run csi-sanity against installed CSI driver.
@@ -1444,18 +1481,11 @@ main () {
14441481
ret=1
14451482
fi
14461483

1447-
# Only add feature regex if groupsnapshot is not enabled
1448-
if [ "${CSI_PROW_ENABLE_GROUP_SNAPSHOT}" = "true" ]; then
1449-
combined_focus="${CSI_PROW_E2E_FOCUS}"
1450-
else
1451-
combined_focus="$focus.*($(regex_join "${CSI_PROW_E2E_FOCUS}"))"
1452-
fi
1453-
14541484
# Run tests that are feature tagged, but non-alpha
14551485
# Ignore: Double quote to prevent globbing and word splitting.
14561486
# shellcheck disable=SC2086
14571487
if ! run_e2e parallel-features ${CSI_PROW_GINKGO_PARALLEL} \
1458-
-focus="$combined_focus" \
1488+
-focus="$focus.*($(regex_join "${CSI_PROW_E2E_FOCUS}"))" \
14591489
-skip="$(regex_join "${CSI_PROW_E2E_SERIAL}")"; then
14601490
warn "E2E parallel features failed"
14611491
ret=1
@@ -1479,6 +1509,18 @@ main () {
14791509
ret=1
14801510
fi
14811511
fi
1512+
1513+
# Run VGS in-tree tests only if enabled
1514+
if [ "${CSI_PROW_ENABLE_GROUP_SNAPSHOT}" = "true" ]; then
1515+
vgs_focus="\[Feature:volumegroupsnapshot\]"
1516+
if ! run_e2e vgs \
1517+
-focus="${vgs_focus}" \
1518+
-skip="$(regex_join "${CSI_PROW_E2E_SERIAL}" "${CSI_PROW_E2E_SKIP}")"; then
1519+
warn "E2E VGS tests failed"
1520+
ret=1
1521+
fi
1522+
fi
1523+
14821524
fi
14831525
delete_cluster_inside_prow_job non-alpha
14841526
fi

0 commit comments

Comments
 (0)