Skip to content

Commit 501a93d

Browse files
committed
TEST: ci: in scheduled mode, run only one k8s cluster per time
1 parent 82c040a commit 501a93d

File tree

1 file changed

+80
-25
lines changed

1 file changed

+80
-25
lines changed

.gitlab-ci.yml

Lines changed: 80 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,22 @@ stages:
44
- unit-tests
55
- build
66
- e2e-tests
7+
- e2e_k8s_19
8+
- e2e_k8s_20
9+
- e2e_k8s_21
10+
- e2e_k8s_22
11+
- e2e_k8s_23
12+
- e2e_k8s_24
713
variables:
814
KUBECTL: v1.24.3
915
KIND: v0.14.0
1016
DOCKER_HOST: tcp://docker:2375
1117
DOCKER_DRIVER: overlay2
1218
diff:
1319
stage: diff
20+
rules:
21+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
22+
- if: $CI_PIPELINE_SOURCE == 'push'
1423
image:
1524
name: $CI_REGISTRY_GO/golang:1.19
1625
entrypoint: [ "" ]
@@ -21,12 +30,11 @@ diff:
2130
script:
2231
- test -z "$(git diff 2> /dev/null)" || exit "Documentation is not generated, issue \`cd documentation/gen && go run .\` and commit the result"
2332
- test -z "$(git ls-files --others --exclude-standard 2> /dev/null)" || exit "Documentation created untracked files, cannot proceed"
24-
only:
25-
- merge_requests
26-
- branches
2733
tidy:
2834
stage: lint
2935
needs: []
36+
rules:
37+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
3038
image:
3139
name: $CI_REGISTRY_GO/golang:1.19
3240
entrypoint: [""]
@@ -35,36 +43,35 @@ tidy:
3543
script:
3644
- go mod tidy
3745
- test -z "$(git diff 2> /dev/null)" || exit 'Go modules not tidied, issue \`go mod tidy\` and commit the result'
38-
only:
39-
- merge_requests
40-
- branches
4146
golangci_lint:
4247
stage: lint
4348
needs: []
49+
rules:
50+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
4451
image:
4552
name: $CI_REGISTRY_GO/lint:1.33
4653
entrypoint: [""]
4754
tags:
4855
- go
4956
script:
5057
- golangci-lint run --enable-all --timeout=10m
51-
only:
52-
- merge_requests
53-
- branches
5458
lint-commit-msg:
5559
stage: lint
5660
needs: []
61+
rules:
62+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
5763
image:
5864
name: $CI_REGISTRY_GO/check-commit:v2.1.0
5965
entrypoint: [""]
6066
tags:
6167
- go
6268
script:
6369
- /check
64-
only:
65-
- merge_requests
6670
unit-tests:
6771
needs: ["diff", "tidy"]
72+
rules:
73+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
74+
- if: $CI_PIPELINE_SOURCE == 'push'
6875
stage: unit-tests
6976
image:
7077
name: $CI_REGISTRY_GO/haproxy-alpine:2.5-go1.19
@@ -74,12 +81,12 @@ unit-tests:
7481
script:
7582
- go build -v .
7683
- go test -v ./...
77-
only:
78-
- merge_requests
79-
- branches
8084
docker-build:
8185
stage: build
8286
needs: []
87+
rules:
88+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
89+
- if: $CI_PIPELINE_SOURCE == 'push'
8390
image: $CI_REGISTRY_GO/docker:stable-go1.19
8491
services:
8592
- name: $CI_REGISTRY_GO/docker:18.09.7-dind
@@ -104,9 +111,41 @@ docker-build:
104111
paths:
105112
- tar
106113
expire_in: 60 minutes
114+
docker-build-sch:
115+
stage: build
116+
needs: []
117+
rules:
118+
- if: $CI_PIPELINE_SOURCE == 'schedule'
119+
image: $CI_REGISTRY_GO/docker:stable-go1.19
120+
services:
121+
- name: $CI_REGISTRY_GO/docker:18.09.7-dind
122+
alias: docker
123+
tags:
124+
- go
125+
before_script:
126+
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_GO
127+
- go version
128+
- docker pull -q $CI_REGISTRY_GO/alpine:3
129+
- docker image tag $CI_REGISTRY_GO/alpine:3 alpine:3
130+
- docker pull -q $CI_REGISTRY_GO/golang:1.19-alpine
131+
- docker image tag $CI_REGISTRY_GO/golang:1.19-alpine golang:1.19-alpine
132+
- sed -i "s~FROM golang~FROM $CI_REGISTRY_GO/golang~g" "build/Dockerfile"
133+
- sed -i "s~FROM haproxytech/haproxy-alpine~FROM $CI_REGISTRY_GO/haproxy-alpine~g" "build/Dockerfile"
134+
script:
135+
- mkdir -p tar
136+
- make build
137+
- docker save -o tar/k8sIC.tar haproxytech/kubernetes-ingress:latest
138+
artifacts:
139+
when: on_success
140+
paths:
141+
- tar
142+
expire_in: 24 hours
107143
.kind_deployment:
108144
stage: e2e-tests
109145
needs: ["diff", "tidy", "docker-build"]
146+
rules:
147+
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
148+
- if: $CI_PIPELINE_SOURCE == 'push'
110149
image: $CI_REGISTRY_GO/docker:stable-go1.19
111150
services:
112151
- name: $CI_REGISTRY_GO/docker:18.09.7-dind
@@ -147,9 +186,6 @@ docker-build:
147186
after_script:
148187
- kubectl get pods -A
149188
- kind delete cluster --name=dev
150-
only:
151-
- merge_requests
152-
- branches
153189
parallel:
154190
matrix:
155191
- TEST_PART: [ "18#e2e_parallel", "18#e2e_https", "1#e2e_sequential" ]
@@ -160,36 +196,55 @@ docker-build:
160196
- IFS='#' read -r -a array <<< $TEST_PART; echo "running tests with --tags=${array[1]}"
161197
- IFS='#' read -r -a array <<< $TEST_PART; KIND_URL=docker CGO_ENABLED=0 go test -v -p ${array[0]} ./deploy/tests/e2e/... --tags=${array[1]}
162198
.kind_deployment_schedules:
163-
only:
164-
- schedules
199+
needs: ["docker-build-sch"]
200+
rules:
201+
- if: $CI_PIPELINE_SOURCE == "schedule"
165202
extends: .kind_deployment
203+
allow_failure: true
204+
artifacts:
205+
paths:
206+
- tar
207+
expire_in: 60 minutes
208+
exclude:
209+
- tar/*
166210
# Kubernetes 1.19 is the oldest release to support networking.k8s.io/v1
167-
k8s_19:
211+
e2e_k8s_19:
212+
stage: e2e_k8s_19
168213
variables:
169214
K8S_VERSION: v1.19.16
170215
KUBEADM_VER: v1beta2
171216
extends: .kind_deployment_schedules
172-
k8s_20:
217+
e2e_k8s_20:
218+
stage: e2e_k8s_20
219+
needs: ["docker-build-sch","e2e_k8s_19"]
173220
variables:
174221
K8S_VERSION: v1.20.15
175222
KUBEADM_VER: v1beta2
176223
extends: .kind_deployment_schedules
177-
k8s_21:
224+
e2e_k8s_21:
225+
stage: e2e_k8s_21
226+
needs: ["docker-build-sch","e2e_k8s_20"]
178227
variables:
179228
K8S_VERSION: v1.21.12
180229
KUBEADM_VER: v1beta2
181230
extends: .kind_deployment_schedules
182-
k8s_22:
231+
e2e_k8s_22:
232+
stage: e2e_k8s_22
233+
needs: ["docker-build-sch","e2e_k8s_21"]
183234
variables:
184235
K8S_VERSION: v1.22.9
185236
KUBEADM_VER: v1beta2
186237
extends: .kind_deployment_schedules
187-
k8s_23:
238+
e2e_k8s_23:
239+
stage: e2e_k8s_23
240+
needs: ["docker-build-sch","e2e_k8s_22"]
188241
variables:
189242
K8S_VERSION: v1.23.6
190243
KUBEADM_VER: v1beta3
191244
extends: .kind_deployment_schedules
192-
k8s_24:
245+
e2e_k8s_24:
246+
stage: e2e_k8s_24
247+
needs: ["docker-build"]
193248
variables:
194249
K8S_VERSION: v1.24.3
195250
KUBEADM_VER: v1beta3

0 commit comments

Comments
 (0)