Skip to content

Commit 483795e

Browse files
committed
feat: Native DaemonSet Progressive Delivery - Part 3: E2E Test
Signed-off-by: Marco Ma <qingjin_ma@163.com>
1 parent 501d832 commit 483795e

File tree

6 files changed

+643
-0
lines changed

6 files changed

+643
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
name: E2E-Native-DaemonSet-1.24
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- release-*
8+
pull_request: {}
9+
workflow_dispatch: {}
10+
11+
# Declare default permissions as read only.
12+
permissions: read-all
13+
14+
env:
15+
# Common versions
16+
GO_VERSION: '1.20'
17+
KIND_VERSION: 'v0.14.0'
18+
KIND_IMAGE: 'kindest/node:v1.24.6'
19+
KIND_CLUSTER_NAME: 'ci-testing'
20+
21+
jobs:
22+
23+
rollout:
24+
runs-on: ubuntu-24.04
25+
steps:
26+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
27+
with:
28+
submodules: true
29+
- name: Setup Go
30+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0
31+
with:
32+
go-version: ${{ env.GO_VERSION }}
33+
- name: Setup Kind Cluster
34+
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
35+
with:
36+
node_image: ${{ env.KIND_IMAGE }}
37+
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
38+
config: ./test/kind-conf.yaml
39+
version: ${{ env.KIND_VERSION }}
40+
- name: Build image
41+
run: |
42+
export IMAGE="openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID}"
43+
docker build --pull --no-cache . -t $IMAGE
44+
kind load docker-image --name=${KIND_CLUSTER_NAME} $IMAGE || { echo >&2 "kind not installed or error loading image: $IMAGE"; exit 1; }
45+
- name: Install Kruise
46+
run: |
47+
set -ex
48+
kubectl cluster-info
49+
make helm
50+
helm repo add openkruise https://openkruise.github.io/charts/
51+
helm repo update
52+
helm install kruise openkruise/kruise --version 1.7.0
53+
for ((i=1;i<10;i++));
54+
do
55+
set +e
56+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
57+
set -e
58+
if [ "$PODS" -eq "2" ]; then
59+
break
60+
fi
61+
sleep 3
62+
done
63+
set +e
64+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
65+
set -e
66+
if [ "$PODS" -eq "2" ]; then
67+
echo "Wait for kruise-manager ready successfully"
68+
else
69+
echo "Timeout to wait for kruise-manager ready"
70+
exit 1
71+
fi
72+
- name: Install Kruise Rollout
73+
run: |
74+
set -ex
75+
kubectl cluster-info
76+
IMG=openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID} ./scripts/deploy_kind.sh
77+
for ((i=1;i<10;i++));
78+
do
79+
set +e
80+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
81+
set -e
82+
if [ "$PODS" -eq "1" ]; then
83+
break
84+
fi
85+
sleep 3
86+
done
87+
set +e
88+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
89+
kubectl get node -o yaml
90+
kubectl get all -n kruise-rollout -o yaml
91+
set -e
92+
if [ "$PODS" -eq "1" ]; then
93+
echo "Wait for kruise-rollout ready successfully"
94+
else
95+
echo "Timeout to wait for kruise-rollout ready"
96+
exit 1
97+
fi
98+
- name: Run E2E Tests
99+
run: |
100+
export KUBECONFIG=/home/runner/.kube/config
101+
make ginkgo
102+
set +e
103+
./bin/ginkgo -timeout 60m -v --focus='Native DaemonSet rollout canary' test/e2e
104+
retVal=$?
105+
if [ "${retVal}" -ne 0 ];then
106+
echo "test fail, dump kruise-rollout logs"
107+
kubectl get pod -n kruise-rollout --no-headers | grep manager | awk '{print $1}' | xargs kubectl logs -n kruise-rollout
108+
fi
109+
exit $retVal
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: E2E-Native-DaemonSet-1.26
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- release-*
8+
pull_request: {}
9+
workflow_dispatch: {}
10+
11+
# Declare default permissions as read only.
12+
permissions: read-all
13+
14+
env:
15+
# Common versions
16+
GO_VERSION: '1.20'
17+
KIND_IMAGE: 'kindest/node:v1.26.3'
18+
KIND_CLUSTER_NAME: 'ci-testing'
19+
20+
jobs:
21+
22+
rollout:
23+
runs-on: ubuntu-24.04
24+
steps:
25+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26+
with:
27+
submodules: true
28+
- name: Setup Go
29+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0
30+
with:
31+
go-version: ${{ env.GO_VERSION }}
32+
- name: Setup Kind Cluster
33+
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
34+
with:
35+
node_image: ${{ env.KIND_IMAGE }}
36+
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
37+
config: ./test/kind-conf.yaml
38+
version: ${{ env.KIND_VERSION }}
39+
- name: Build image
40+
run: |
41+
export IMAGE="openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID}"
42+
docker build --pull --no-cache . -t $IMAGE
43+
kind load docker-image --name=${KIND_CLUSTER_NAME} $IMAGE || { echo >&2 "kind not installed or error loading image: $IMAGE"; exit 1; }
44+
- name: Install Kruise
45+
run: |
46+
set -ex
47+
kubectl cluster-info
48+
make helm
49+
helm repo add openkruise https://openkruise.github.io/charts/
50+
helm repo update
51+
helm install kruise openkruise/kruise --version 1.7.0
52+
for ((i=1;i<10;i++));
53+
do
54+
set +e
55+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
56+
set -e
57+
if [ "$PODS" -eq "2" ]; then
58+
break
59+
fi
60+
sleep 3
61+
done
62+
set +e
63+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
64+
set -e
65+
if [ "$PODS" -eq "2" ]; then
66+
echo "Wait for kruise-manager ready successfully"
67+
else
68+
echo "Timeout to wait for kruise-manager ready"
69+
exit 1
70+
fi
71+
- name: Install Kruise Rollout
72+
run: |
73+
set -ex
74+
kubectl cluster-info
75+
IMG=openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID} ./scripts/deploy_kind.sh
76+
for ((i=1;i<10;i++));
77+
do
78+
set +e
79+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
80+
set -e
81+
if [ "$PODS" -eq "1" ]; then
82+
break
83+
fi
84+
sleep 3
85+
done
86+
set +e
87+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
88+
kubectl get node -o yaml
89+
kubectl get all -n kruise-rollout -o yaml
90+
set -e
91+
if [ "$PODS" -eq "1" ]; then
92+
echo "Wait for kruise-rollout ready successfully"
93+
else
94+
echo "Timeout to wait for kruise-rollout ready"
95+
exit 1
96+
fi
97+
- name: Run E2E Tests
98+
run: |
99+
export KUBECONFIG=/home/runner/.kube/config
100+
make ginkgo
101+
set +e
102+
./bin/ginkgo -timeout 60m -v --focus='Native DaemonSet rollout canary' test/e2e
103+
retVal=$?
104+
if [ "${retVal}" -ne 0 ];then
105+
echo "test fail, dump kruise-rollout logs"
106+
kubectl get pod -n kruise-rollout --no-headers | grep manager | awk '{print $1}' | xargs kubectl logs -n kruise-rollout
107+
fi
108+
exit $retVal
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
name: E2E-Native-DaemonSet-1.28
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- release-*
8+
pull_request: {}
9+
workflow_dispatch: {}
10+
11+
# Declare default permissions as read only.
12+
permissions: read-all
13+
14+
env:
15+
# Common versions
16+
GO_VERSION: '1.20'
17+
KIND_VERSION: 'v0.22.0'
18+
KIND_IMAGE: 'kindest/node:v1.28.7'
19+
KIND_CLUSTER_NAME: 'ci-testing'
20+
21+
jobs:
22+
23+
rollout:
24+
runs-on: ubuntu-24.04
25+
steps:
26+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
27+
with:
28+
submodules: true
29+
- name: Setup Go
30+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0
31+
with:
32+
go-version: ${{ env.GO_VERSION }}
33+
- name: Setup Kind Cluster
34+
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
35+
with:
36+
node_image: ${{ env.KIND_IMAGE }}
37+
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
38+
config: ./test/kind-conf.yaml
39+
version: ${{ env.KIND_VERSION }}
40+
- name: Build image
41+
run: |
42+
export IMAGE="openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID}"
43+
docker build --pull --no-cache . -t $IMAGE
44+
kind load docker-image --name=${KIND_CLUSTER_NAME} $IMAGE || { echo >&2 "kind not installed or error loading image: $IMAGE"; exit 1; }
45+
- name: Install Kruise
46+
run: |
47+
set -ex
48+
kubectl cluster-info
49+
make helm
50+
helm repo add openkruise https://openkruise.github.io/charts/
51+
helm repo update
52+
helm install kruise openkruise/kruise --version 1.7.0
53+
for ((i=1;i<10;i++));
54+
do
55+
set +e
56+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
57+
set -e
58+
if [ "$PODS" -eq "2" ]; then
59+
break
60+
fi
61+
sleep 3
62+
done
63+
set +e
64+
PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l)
65+
set -e
66+
if [ "$PODS" -eq "2" ]; then
67+
echo "Wait for kruise-manager ready successfully"
68+
else
69+
echo "Timeout to wait for kruise-manager ready"
70+
exit 1
71+
fi
72+
- name: Install Kruise Rollout
73+
run: |
74+
set -ex
75+
kubectl cluster-info
76+
IMG=openkruise/kruise-rollout:e2e-${GITHUB_RUN_ID} ./scripts/deploy_kind.sh
77+
for ((i=1;i<10;i++));
78+
do
79+
set +e
80+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
81+
set -e
82+
if [ "$PODS" -eq "1" ]; then
83+
break
84+
fi
85+
sleep 3
86+
done
87+
set +e
88+
PODS=$(kubectl get pod -n kruise-rollout | grep '1/1' | wc -l)
89+
kubectl get node -o yaml
90+
kubectl get all -n kruise-rollout -o yaml
91+
set -e
92+
if [ "$PODS" -eq "1" ]; then
93+
echo "Wait for kruise-rollout ready successfully"
94+
else
95+
echo "Timeout to wait for kruise-rollout ready"
96+
exit 1
97+
fi
98+
- name: Run E2E Tests
99+
run: |
100+
export KUBECONFIG=/home/runner/.kube/config
101+
make ginkgo
102+
set +e
103+
./bin/ginkgo -timeout 60m -v --focus='Native DaemonSet rollout canary' test/e2e
104+
retVal=$?
105+
if [ "${retVal}" -ne 0 ];then
106+
echo "test fail, dump kruise-rollout logs"
107+
kubectl get pod -n kruise-rollout --no-headers | grep manager | awk '{print $1}' | xargs kubectl logs -n kruise-rollout
108+
fi
109+
exit $retVal

0 commit comments

Comments
 (0)