From 902aca42028432a5b17f714210360e627c31d3ec Mon Sep 17 00:00:00 2001 From: Naman Agarwal Date: Thu, 19 Oct 2023 13:22:59 +0530 Subject: [PATCH] Add jenkins job for Windows OVS containerization Add new jobs to run e2e, conformance and networkpolicy tests on testbed with Containerd runtime and OVS running inside container. Signed-off-by: Naman Agarwal Signed-off-by: Pulkit Jain --- ci/jenkins/README.md | 38 ++----------- ci/jenkins/jobs/macros.yaml | 27 +++------ ci/jenkins/jobs/projects-lab.yaml | 85 +++++++++++++++++++++++---- ci/jenkins/test.sh | 95 +++++++++++++------------------ 4 files changed, 131 insertions(+), 114 deletions(-) diff --git a/ci/jenkins/README.md b/ci/jenkins/README.md index 753b0521a71..3a8b0989ba2 100644 --- a/ci/jenkins/README.md +++ b/ci/jenkins/README.md @@ -85,7 +85,7 @@ DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" ./ci/jenkins/test.sh --testcase networkpolicy --registry ${DOCKER_REGISTRY} ``` -* windows e2e: e2e tests in a Windows setup with Docker runtime. +* Windows e2e: e2e tests in a Windows setup. ```shell #!/bin/bash @@ -93,7 +93,8 @@ DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" ./ci/jenkins/test.sh --testcase windows-e2e --registry ${DOCKER_REGISTRY} ``` -* windows conformance: community tests on Windows cluster with Docker runtime, focusing on "Conformance|sig-windows" and +* Windows conformance: community tests on Windows cluster + and OVS running inside container, focusing on "conformance|sig-windows" and "sig-network", and skipping "LinuxOnly", "Slow", "Serial", "Disruptive", "Flaky", "Feature", "sig-cli", "sig-storage", "sig-auth", "sig-api-machinery", "sig-apps", "sig-node", "Privileged", "should be able to change the type from", "[sig-network] Services should be able to create a functioning NodePort service [Conformance]", "Service endpoints @@ -105,7 +106,8 @@ DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" ./ci/jenkins/test.sh --testcase windows-conformance --registry ${DOCKER_REGISTRY} ``` -* windows network policy: community tests on Windows cluster with Docker runtime, focusing on "Feature:NetworkPolicy". +* Windows network policy: community tests on Windows cluster, + and OVS running inside a container focusing on "Feature:NetworkPolicy". ```shell #!/bin/bash @@ -121,34 +123,6 @@ DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" ./ci/jenkins/test.sh --testcase windows-e2e --registry ${DOCKER_REGISTRY} --proxyall ``` -* windows containerd e2e: e2e tests in a Windows setup with containerd runtime. - -```shell -#!/bin/bash -DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" -./ci/jenkins/test.sh --testcase windows-e2e --registry ${DOCKER_REGISTRY} --win-image-node {antrea_win_image_node_name} -``` - -* windows containerd conformance: community tests on Windows cluster with containerd runtime, focusing on "Conformance|sig-windows" and - "sig-network", and skipping "LinuxOnly", "Slow", "Serial", "Disruptive", "Flaky", "Feature", "sig-cli", "sig-storage", - "sig-auth", "sig-api-machinery", "sig-apps", "sig-node", "Privileged", "should be able to change the type from", - "[sig-network] Services should be able to create a functioning NodePort service [Conformance]", "Service endpoints - latency should not be very high". - -```shell -#!/bin/bash -DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" -./ci/jenkins/test.sh --testcase windows-conformance --registry ${DOCKER_REGISTRY} --win-image-node {antrea_win_image_node_name} -``` - -* windows containerd network policy: community tests on Windows cluster with containerd runtime, focusing on "Feature:NetworkPolicy". - -```shell -#!/bin/bash -DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" -./ci/jenkins/test.sh --testcase windows-networkpolicy --registry ${DOCKER_REGISTRY} --win-image-node {antrea_win_image_node_name} -``` - * Multicast e2e: e2e tests in a multicast cluster ```shell @@ -333,5 +307,5 @@ updated with new code. ## Tips for Developer -* [macro.yaml](jobs/macros.yaml): Use "{{}}" instead of "{}" to escape the "{" in "builder-list-tests", "builder-conformance" and "builder-*-win-containerd" because the macro has parameters. +* [macro.yaml](jobs/macros.yaml): Use "{{}}" instead of "{}" to escape the "{" in "builder-list-tests", "builder-conformance" and "builder-*-win" because the macro has parameters. * While setting up the Rancher testbed, delete the cattle-cluster-agent deployment and use cattle-node-agent because cluster-agent adds extra watchers for all the resources. Antrea Controller counts connected Antrea Agent from watcher connections. Extra watchers lead to wrong Antrea Agent number in AntreaControllerInfo CR. diff --git a/ci/jenkins/jobs/macros.yaml b/ci/jenkins/jobs/macros.yaml index fe83a8c27e2..99d4564a095 100644 --- a/ci/jenkins/jobs/macros.yaml +++ b/ci/jenkins/jobs/macros.yaml @@ -122,31 +122,22 @@ ./ci/jenkins/test.sh --testcase windows-install-ovs - builder: - name: builder-e2e-proxyall-win + name: builder-e2e-win builders: - shell: |- #!/bin/bash set -ex DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" - ./ci/jenkins/test.sh --testcase windows-e2e --registry ${DOCKER_REGISTRY} --proxyall + ./ci/jenkins/test.sh --testcase '{e2e_type}' --registry ${{DOCKER_REGISTRY}} - builder: - name: builder-e2e-win - builders: - - shell: |- - #!/bin/bash - set -ex - DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" - ./ci/jenkins/test.sh --testcase windows-containerd-e2e --registry ${{DOCKER_REGISTRY}} --win-image-node '{win_image_node}' - -- builder: - name: builder-conformance-win - builders: - - shell: |- - #!/bin/bash - set -ex - DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" - ./ci/jenkins/test.sh --testcase '{conformance_type}' --registry ${{DOCKER_REGISTRY}} --win-image-node '{win_image_node}' + name: builder-conformance-win + builders: + - shell: |- + #!/bin/bash + set -ex + DOCKER_REGISTRY="$(head -n1 ci/docker-registry)" + ./ci/jenkins/test.sh --testcase '{conformance_type}' --registry ${{DOCKER_REGISTRY}} - builder: name: builder-flexible-ipam-e2e diff --git a/ci/jenkins/jobs/projects-lab.yaml b/ci/jenkins/jobs/projects-lab.yaml index 0c89cceff0c..ce65b19b009 100644 --- a/ci/jenkins/jobs/projects-lab.yaml +++ b/ci/jenkins/jobs/projects-lab.yaml @@ -1,6 +1,6 @@ - project: - # ghpr_auth, antrea_admin_list, antrea_org_list, antrea_white_list and - # antrea_win_image_node_name should be defined as a global variable somewhere else + # ghpr_auth, antrea_admin_list, antrea_org_list, antrea_white_list + # should be defined as global variables somewhere else name: antrea git_credentials_id: ANTREA_GIT_CREDENTIAL org_repo: antrea-io/antrea @@ -601,14 +601,13 @@ publishers: [] - '{name}-{test_name}-for-pull-request': test_name: windows-conformance - node: 'antrea-windows-containerd-testbed' + node: 'antrea-windows-testbed' description: 'This is the {test_name} test for {name}.' branches: - ${{sha1}} builders: - builder-conformance-win: - conformance_type: 'windows-containerd-conformance' - win_image_node: '{antrea_win_image_node_name}' + conformance_type: 'windows-conformance' trigger_phrase: ^(?!Thanks for your PR).*/test-windows-(conformance|all).* white_list_target_branches: [ ] allow_whitelist_orgs_as_admins: true @@ -658,14 +657,13 @@ only-if-success: false - '{name}-{test_name}-for-pull-request': test_name: windows-networkpolicy - node: 'antrea-windows-containerd-testbed' + node: 'antrea-windows-testbed' description: 'This is the {test_name} test for {name}.' branches: - ${{sha1}} builders: - builder-conformance-win: - conformance_type: 'windows-containerd-networkpolicy' - win_image_node: '{antrea_win_image_node_name}' + conformance_type: 'windows-networkpolicy' trigger_phrase: ^(?!Thanks for your PR).*/test-windows-(networkpolicy|all).* white_list_target_branches: [ ] allow_whitelist_orgs_as_admins: true @@ -713,15 +711,39 @@ default-excludes: true fingerprint: false only-if-success: false + - '{name}-{test_name}-no-scm': + test_name: windows-e2e-skip + node: null + description: 'This is for marking PR as passed.' + branches: + - ${{sha1}} + builders: [] + allow_whitelist_orgs_as_admins: true + admin_list: '{antrea_admin_list}' + org_list: '{antrea_org_list}' + white_list: '{antrea_white_list}' + only_trigger_phrase: true + trigger_permit_all: false + trigger_phrase: ^(?!Thanks for your PR).*/skip-(windows-e2e|all).* + white_list_target_branches: [] + status_context: jenkins-windows-e2e + status_url: --none-- + success_status: Skipped test. Mark as succeeded. + failure_status: Skipped test. Mark as succeeded. + error_status: Skipped test. Mark as succeeded. + triggered_status: null + started_status: null + wrappers: [] + publishers: [] - '{name}-{test_name}-for-pull-request': test_name: windows-e2e - node: 'antrea-windows-containerd-testbed' + node: 'antrea-windows-testbed' description: 'This is the {test_name} test for {name}.' branches: - ${{sha1}} builders: - builder-e2e-win: - win_image_node: '{antrea_win_image_node_name}' + e2e_type: 'windows-e2e' trigger_phrase: ^(?!Thanks for your PR).*/test-windows-(e2e|all).* white_list_target_branches: [ ] allow_whitelist_orgs_as_admins: true @@ -769,6 +791,49 @@ default-excludes: true fingerprint: false only-if-success: false + - '{name}-{test_name}-for-period': + test_name: windows-e2e-userspace + node: 'antrea-windows-testbed' + description: 'This is for running e2e tests with OVS userspace mode on a testbed.' + builders: + - builder-e2e-win: + e2e_type: 'windows-e2e-userspace' + branches: + - '*/main' + included_regions: [] + cron: 'H H * * *' + ignore_post_commit_hooks: false + publishers: + - email: + recipients: projectantrea-dev@googlegroups.com + - archive: + allow-empty: true + artifacts: 'ci/jenkins/*sonobuoy*.tar.gz, whole-e2e-coverage.tar.gz' + case-sensitive: true + default-excludes: true + fingerprint: false + only-if-success: false + wrappers: + - timeout: + fail: true + timeout: 135 + type: absolute + - credentials-binding: + - text: + credential-id: GOVC_URL + variable: GOVC_URL + - text: + credential-id: GOVC_USERNAME + variable: GOVC_USERNAME + - text: + credential-id: GOVC_PASSWORD + variable: GOVC_PASSWORD + - text: + credential-id: GOVC_DATACENTER + variable: GOVC_DATACENTER + - text: + credential-id: GOVC_DATASTORE + variable: GOVC_DATASTORE - '{name}-{test_name}-for-pull-request': test_name: kind-conformance node: 'antrea-kind-testbed' diff --git a/ci/jenkins/test.sh b/ci/jenkins/test.sh index 67dea80733d..21eefe100df 100755 --- a/ci/jenkins/test.sh +++ b/ci/jenkins/test.sh @@ -32,7 +32,6 @@ DOCKER_REGISTRY=$(head -n1 "${WORKSPACE}/ci/docker-registry") TESTBED_TYPE="legacy" GO_VERSION=$(head -n1 "${WORKSPACE}/build/images/deps/go-version") IMAGE_PULL_POLICY="Always" -PROXY_ALL=false DEFAULT_IP_MODE="ipv4" IP_MODE="" K8S_VERSION="1.28.2-00" @@ -57,7 +56,7 @@ PRINT_DOCKER_STATUS="docker system df -v" PRINT_CONTAINERD_STATUS="crictl ps --state Exited" _usage="Usage: $0 [--kubeconfig ] [--workdir ] - [--testcase ] + [--testcase ] Run K8s e2e community tests (Conformance & Network Policy) or Antrea e2e tests on a remote (Jenkins) Windows or Linux cluster. @@ -65,10 +64,9 @@ Run K8s e2e community tests (Conformance & Network Policy) or Antrea e2e tests o --workdir Home path for Go, vSphere information and antrea_logs during cluster setup. Default is $WORKDIR. --testcase Windows install OVS, Conformance and Network Policy or Antrea e2e testcases on a Windows or Linux cluster. It can also be flexible ipam or multicast e2e test. --registry The docker registry to use instead of dockerhub. - --proxyall Enable proxyAll to test AntreaProxy. --testbed-type The testbed type to run tests. It can be flexible-ipam, jumper or legacy. --ip-mode IP mode for flexible-ipam e2e test. Default is $DEFAULT_IP_MODE. It can also be ipv6 or ds. - --win-image-node Name of the windows image node in containerd cluster. Images are built by docker on this node. + --win-image-node Name of the windows image node in cluster. Images are built by docker on this node. --kind-cluster-name Name of the kind Cluster." function print_usage { @@ -108,10 +106,6 @@ case $key in TESTBED_TYPE="$2" shift 2 ;; - --proxyall) - PROXY_ALL=true - shift - ;; --ip-mode) IP_MODE="$2" shift 2 @@ -270,22 +264,16 @@ function check_dhcp_status { function wait_for_antrea_windows_pods_ready { kubectl apply -f "${WORKDIR}/antrea.yml" - if [[ "${PROXY_ALL}" == false && ${TESTCASE} =~ "windows-e2e" ]]; then - kubectl apply -f "${WORKDIR}/kube-proxy-${WINDOWS_YAML_SUFFIX}.yml" - fi - kubectl apply -f "${WORKDIR}/antrea-${WINDOWS_YAML_SUFFIX}.yml" # Set trap to catch any errors from subsequent commands trap collect_windows_network_info_and_logs ERR + kubectl apply -f "${WORKDIR}/${WINDOWS_YAML_SUFFIX}.yml" kubectl rollout restart deployment/coredns -n kube-system kubectl rollout status deployment/coredns -n kube-system kubectl rollout status deployment.apps/antrea-controller -n kube-system kubectl rollout status daemonset/antrea-agent -n kube-system kubectl rollout status daemonset.apps/antrea-agent-windows -n kube-system - if [[ "${PROXY_ALL}" == false && ${TESTCASE} =~ "windows-e2e" ]]; then - kubectl rollout status daemonset/kube-proxy-windows -n kube-system - fi kubectl get nodes -o wide --no-headers=true | awk -v role="$CONTROL_PLANE_NODE_ROLE" '$3 !~ role && $1 ~ /win/ {print $6}' | while read IP; do for i in `seq 5`; do sleep 5 @@ -346,12 +334,12 @@ function prepare_env { function revert_snapshot_windows { WIN_NAME=$1 echo "==== Reverting Windows VM ${WIN_NAME} =====" - if [[ $WIN_NAME == *"jumper"* ]]; then + if [[ $WIN_NAME == *"jumper"* || $WIN_NAME == *"win-image"* || ${TESTCASE} == *"userspace"* ]]; then govc snapshot.revert -vm ${WIN_NAME} win-initial else govc snapshot.revert -vm ${WIN_NAME} pristine-win-initial fi - # If Windows VM fails to power on correctly in time, retry several times. + winVMIPs="" for i in `seq 10`; do winVMIPs=$(govc vm.ip -wait=2m -a ${WIN_NAME}) @@ -376,11 +364,10 @@ function revert_snapshot_windows { sleep 5 } -function build_and_deliver_antrea_windows_and_linux_containerd_images { - echo "====== Cleanup Antrea Installation Before Delivering Antrea Windows and Antrea Linux containerd Images =====" +function build_and_deliver_antrea_windows_and_linux_images { + echo "====== Cleanup Antrea Installation Before Delivering Antrea Windows and Antrea Linux Images =====" clean_antrea - kubectl delete -f ${WORKDIR}/antrea-windows-with-ovs.yml --ignore-not-found=true || true - kubectl delete -f ${WORKDIR}/kube-proxy-windows-containerd.yml --ignore-not-found=true || true + kubectl delete -f ${WORKDIR}/${WINDOWS_YAML_SUFFIX}.yml --ignore-not-found=true || true kubectl delete daemonset antrea-agent -n kube-system --ignore-not-found=true || true kubectl delete -f ${WORKDIR}/antrea.yml --ignore-not-found=true || true @@ -392,31 +379,31 @@ function build_and_deliver_antrea_windows_and_linux_containerd_images { ${PRINT_DOCKER_STATUS} export_govc_env_var # Enable verbose log for troubleshooting. - sed -i "s/--v=0/--v=4/g" build/yamls/antrea.yml build/yamls/antrea-windows-with-ovs.yml + sed -i "s/--v=0/--v=4/g" build/yamls/antrea.yml build/yamls/${WINDOWS_YAML_SUFFIX}.yml echo "====== Updating yaml files to enable proxyAll ======" KUBE_API_SERVER=$(kubectl --kubeconfig=$KubeConfigFile config view -o jsonpath='{.clusters[0].cluster.server}') - sed -i "s|.*kubeAPIServerOverride: \"\"| kubeAPIServerOverride: \"${KUBE_API_SERVER}\"|g" build/yamls/antrea.yml build/yamls/antrea-windows-with-ovs.yml + sed -i "s|.*kubeAPIServerOverride: \"\"| kubeAPIServerOverride: \"${KUBE_API_SERVER}\"|g" build/yamls/antrea.yml build/yamls/${WINDOWS_YAML_SUFFIX}.yml cp -f build/yamls/*.yml $WORKDIR set +e - deliver_antrea_windows_containerd &> deliver_antrea_windows_containerd.log & - deliver_antrea_windows_containerd=$! - deliver_antrea_linux_containerd + deliver_antrea_windows &> deliver_antrea_windows.log & + deliver_antrea_windows=$! + deliver_antrea_linux linux_result=$? - wait $deliver_antrea_linux_containerd + wait $deliver_antrea_linux windows_result=$? - cat deliver_antrea_windows_containerd.log + cat deliver_antrea_windows.log if [ $windows_result -ne 0 ] || [ $linux_result -ne 0 ]; then exit 1 fi set -e } -function deliver_antrea_linux_containerd { +function deliver_antrea_linux { set -e - echo "==== Start building and delivering Linux containerd images ====" + echo "==== Start building and delivering Linux images ====" DOCKER_REGISTRY="${DOCKER_REGISTRY}" ./hack/build-antrea-linux-all.sh --pull docker save -o antrea-ubuntu.tar antrea/antrea-agent-ubuntu:latest antrea/antrea-controller-ubuntu:latest echo "===== Pull necessary images on Control-Plane node =====" @@ -458,10 +445,10 @@ function deliver_antrea_linux_containerd { ssh -o StrictHostKeyChecking=no -n jenkins@${IP} "ctr -n=k8s.io images pull ${k8s_images[i]} && ctr -n=k8s.io images tag ${k8s_images[i]} ${e2e_images[i]}" || true done done - echo "==== Finish building and delivering Linux containerd images ====" + echo "==== Finish building and delivering Linux images ====" } -function deliver_antrea_windows_containerd { +function deliver_antrea_windows { echo "===== Build Antrea Windows on Windows Jumper Node =====" echo "==== Reverting Windows VM ${WIN_IMAGE_NODE} =====" revert_snapshot_windows ${WIN_IMAGE_NODE} @@ -484,8 +471,8 @@ function deliver_antrea_windows_containerd { revert_snapshot_windows ${WORKER_NAME} # Some tests need us.gcr.io/k8s-artifacts-prod/e2e-test-images/agnhost:2.13 image but it is not for windows/amd64 10.0.17763 # Use e2eteam/agnhost:2.13 instead - harbor_images=("sigwindowstools-kube-proxy:v1.18.0" "agnhost:2.13" "agnhost:2.13" "agnhost:2.29" "e2eteam-jessie-dnsutils:1.0" "e2eteam-pause:3.2") - antrea_images=("sigwindowstools/kube-proxy:v1.18.0" "e2eteam/agnhost:2.13" "us.gcr.io/k8s-artifacts-prod/e2e-test-images/agnhost:2.13" "registry.k8s.io/e2e-test-images/agnhost:2.29" "e2eteam/jessie-dnsutils:1.0" "e2eteam/pause:3.2") + harbor_images=("agnhost:2.13" "agnhost:2.13" "agnhost:2.29" "e2eteam-jessie-dnsutils:1.0" "e2eteam-pause:3.2") + antrea_images=("e2eteam/agnhost:2.13" "us.gcr.io/k8s-artifacts-prod/e2e-test-images/agnhost:2.13" "registry.k8s.io/e2e-test-images/agnhost:2.29" "e2eteam/jessie-dnsutils:1.0" "e2eteam/pause:3.2") k8s_images=("registry.k8s.io/e2e-test-images/agnhost:2.45" "registry.k8s.io/e2e-test-images/jessie-dnsutils:1.5" "registry.k8s.io/e2e-test-images/nginx:1.14-2" "registry.k8s.io/pause:3.8") e2e_images=("k8sprow.azurecr.io/kubernetes-e2e-test-images/agnhost:2.45" "k8sprow.azurecr.io/kubernetes-e2e-test-images/jessie-dnsutils:1.5" "k8sprow.azurecr.io/kubernetes-e2e-test-images/nginx:1.14-2" "k8sprow.azurecr.io/kubernetes-e2e-test-images/pause:3.8") # Pull necessary images in advance to avoid transient error @@ -511,7 +498,7 @@ function deliver_antrea_windows_containerd { echo "Original adapter DHCP status: $WIN_DHCP" echo $WIN_DHCP > WIN_DHCP rm -f antrea-windows.tar - echo "==== Finish building and delivering Windows containerd images ====" + echo "==== Finish building and delivering Windows images ====" } function deliver_antrea { @@ -561,14 +548,12 @@ function deliver_antrea { fi done - if [[ "${PROXY_ALL}" == true ]]; then - echo "====== Updating yaml files to enable proxyAll ======" - KUBERNETES_SVC_EP_IP=$(kubectl get endpoints kubernetes -o jsonpath='{.subsets[0].addresses[0].ip}') - KUBERNETES_SVC_EP_PORT=$(kubectl get endpoints kubernetes -o jsonpath='{.subsets[0].ports[0].port}') - KUBERNETES_SVC_EP_ADDR="${KUBERNETES_SVC_EP_IP}:${KUBERNETES_SVC_EP_PORT}" - sed -i "s|.*kubeAPIServerOverride: \"\"| kubeAPIServerOverride: \"${KUBERNETES_SVC_EP_ADDR}\"|g" build/yamls/antrea.yml - sed -i "s|.*proxyAll: false| proxyAll: true|g" build/yamls/antrea.yml - fi + echo "====== Updating yaml files to enable proxyAll ======" + KUBERNETES_SVC_EP_IP=$(kubectl get endpoints kubernetes -o jsonpath='{.subsets[0].addresses[0].ip}') + KUBERNETES_SVC_EP_PORT=$(kubectl get endpoints kubernetes -o jsonpath='{.subsets[0].ports[0].port}') + KUBERNETES_SVC_EP_ADDR="${KUBERNETES_SVC_EP_IP}:${KUBERNETES_SVC_EP_PORT}" + sed -i "s|.*kubeAPIServerOverride: \"\"| kubeAPIServerOverride: \"${KUBERNETES_SVC_EP_ADDR}\"|g" build/yamls/antrea.yml + sed -i "s|.*proxyAll: false| proxyAll: true|g" build/yamls/antrea.yml echo "=== Append antrea-prometheus.yml to antrea.yml ===" echo "---" >> build/yamls/antrea.yml cat build/yamls/antrea-prometheus.yml >> build/yamls/antrea.yml @@ -736,7 +721,7 @@ function run_e2e_windows { tar -zcf antrea-test-logs.tar.gz antrea-test-logs } -function run_conformance_windows_containerd { +function run_conformance_windows { echo "====== Running Antrea Conformance Tests ======" export GO111MODULE=on export GOPATH=${WORKDIR}/go @@ -755,8 +740,8 @@ function run_conformance_windows_containerd { echo "====== Run test with conformance test ======" export KUBE_TEST_REPO_LIST=${WORKDIR}/repo_list - if [ "$TESTCASE" == "windows-containerd-networkpolicy" ]; then - # Allow LinuxOnly mark in windows-containerd-networkpolicy because Antrea Windows supports NP functions. + if [ "$TESTCASE" == "windows-networkpolicy" ]; then + # Allow LinuxOnly mark in windows-networkpolicy because Antrea Windows supports NP functions. ginkgo -timeout=3h -p --flake-attempts 3 --no-color $E2ETEST_PATH -- --provider=skeleton --ginkgo.focus="$WINDOWS_NETWORKPOLICY_FOCUS" --ginkgo.skip="$WINDOWS_NETWORKPOLICY_CONTAINERD_SKIP" > windows_conformance_result_no_color.txt || true else ginkgo --no-color $E2ETEST_PATH -- --provider=skeleton --node-os-distro=windows --ginkgo.focus="$WINDOWS_CONFORMANCE_FOCUS" --ginkgo.skip="$WINDOWS_CONFORMANCE_SKIP" > windows_conformance_result_no_color.txt || true @@ -1003,14 +988,16 @@ fi trap clean_antrea EXIT if [[ ${TESTCASE} =~ "windows" ]]; then - if [[ ${TESTCASE} =~ "containerd" ]]; then - WINDOWS_YAML_SUFFIX="windows-with-ovs" - build_and_deliver_antrea_windows_and_linux_containerd_images - if [[ ${TESTCASE} =~ "e2e" ]]; then - run_e2e_windows - else - run_conformance_windows_containerd - fi + if [[ ${TESTCASE} == *"userspace"* ]]; then + WINDOWS_YAML_SUFFIX="antrea-windows" + else + WINDOWS_YAML_SUFFIX="antrea-windows-with-ovs" + fi + build_and_deliver_antrea_windows_and_linux_images + if [[ ${TESTCASE} =~ "e2e" ]]; then + run_e2e_windows + else + run_conformance_windows fi elif [[ ${TESTCASE} =~ "e2e" ]]; then deliver_antrea