4
4
GITHUB_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }} # necessary to pass upgrade tests
5
5
6
6
on :
7
- # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07
8
- # Minute [0,59]
9
- # Hour [0,23]
10
- # Day of the month [1,31]
11
- # Month of the year [1,12]
12
- # Day of the week ([0,6] with 0=Sunday)
13
- schedule :
14
- - cron : " 0 5 * * *" # every day @ 05:00 UTC, run tests against latest main
15
- - cron : " 0 6 * * 1" # monday @ 06:00 UTC, run expanded tests against v1.17.x
16
- - cron : " 0 7 * * 1" # monday @ 07:00 UTC, run expanded tests against v1.16.x
17
- - cron : " 0 8 * * 1" # monday @ 08:00 UTC, run expanded tests against v1.15.x
7
+ # Since this is an LTS branch, we removed the schedule, since that is defined on the `main` branch
8
+ # schedule:
9
+ # -
18
10
workflow_dispatch :
19
11
inputs :
20
12
branch :
21
13
description : " The branch to run tests against"
22
14
type : choice
23
15
options :
24
- - main
25
- - v1.17.x
26
- - v1.16.x
27
- - v1.15.x
28
16
- workflow_initiating_branch
29
17
run-regression :
30
18
description : " Run regression tests"
@@ -114,130 +102,6 @@ jobs:
114
102
istio-version : ${{ steps.dotenv.outputs.istio_version }}
115
103
matrix-label : ${{ matrix.version-files.label }}
116
104
117
- end_to_end_tests_main :
118
- name : End-to-End (branch=main, cluster=${{ matrix.test.cluster-name }}, version=${{ matrix.version-files.label }} )
119
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-kubernetes-end-to-end && inputs.branch == 'main') || github.event.schedule == '0 5 * * *' }}
120
- runs-on : ubuntu-22.04
121
- timeout-minutes : 180
122
- strategy :
123
- # Since we are running these on a schedule, there is no value in failing fast
124
- # In fact, we want to ensure that all tests run, so that we have a clearer picture of which tests are prone to flaking
125
- fail-fast : false
126
- matrix :
127
- test :
128
- # When running the tests at night, there is no value in splitting the tests across multiple clusters and running them in parallel.
129
- # As a result, we increase the threshold for the tests, since they all run serially on a single cluster
130
- - cluster-name : ' cluster-one'
131
- go-test-args : ' -v -timeout=150m'
132
- # Specifying an empty regex means all tests will be run.
133
- go-test-run-regex : " "
134
- # In our nightly tests, we run the suite of tests using the lower and upper ends of versions that we claim to support
135
- # The versions should mirror: https://docs.solo.io/gloo-edge/latest/reference/support/
136
- version-files :
137
- - label : ' min'
138
- file : ' ./.github/workflows/.env/nightly-tests/min_versions.env'
139
- - label : ' max'
140
- file : ' ./.github/workflows/.env/nightly-tests/max_versions.env'
141
-
142
- steps :
143
- - uses : actions/checkout@v4
144
- with :
145
- ref : main
146
- # The dotenv action is used to load key-value pairs from files.
147
- # In this case, the file is specified in the matrix and will contain the versions of the tools to use
148
- - name : Dotenv Action
149
-
150
- id : dotenv
151
- with :
152
- path : ${{ matrix.version-files.file }}
153
- log-variables : true
154
- - name : Prep Go Runner
155
- uses : ./.github/workflows/composite-actions/prep-go-runner
156
- # Set up the KinD cluster that the tests will use
157
- - id : setup-kind-cluster
158
- name : Setup KinD Cluster
159
- uses : ./.github/workflows/composite-actions/setup-kind-cluster
160
- with :
161
- cluster-name : ${{ matrix.test.cluster-name }}
162
- kind-node-version : ${{ steps.dotenv.outputs.node_version }}
163
- kind-version : ${{ steps.dotenv.outputs.kind_version }}
164
- kubectl-version : ${{ steps.dotenv.outputs.kubectl_version }}
165
- helm-version : ${{ steps.dotenv.outputs.helm_version }}
166
- istio-version : ${{ steps.dotenv.outputs.istio_version }}
167
- k8sgateway-api-version : ${{ steps.dotenv.outputs.k8sgateway_api_version }}
168
- # Run the tests
169
- - id : run-tests
170
- name : Run Kubernetes e2e Tests
171
- uses : ./.github/workflows/composite-actions/kubernetes-e2e-tests
172
- with :
173
- cluster-name : ${{ matrix.test.cluster-name }}
174
- test-args : ${{ matrix.test.go-test-args }}
175
- run-regex : ${{ matrix.test.go-test-run-regex }}
176
- istio-version : ${{ steps.dotenv.outputs.istio_version }}
177
- matrix-label : ${{ matrix.version-files.label }}
178
-
179
- # Reminder: when setting up the job next release branch, copy from "end_to_end_tests_main" not the previous release job as configuration may have changed
180
- end_to_end_tests_17 :
181
- name : End-to-End (branch=v1.17.x, cluster=${{ matrix.test.cluster-name }}, version=${{ matrix.version-files.label }} )
182
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-kubernetes-end-to-end && inputs.branch == 'v1.17.x') || github.event.schedule == '0 6 * * 1' }}
183
- runs-on : ubuntu-22.04
184
- timeout-minutes : 150
185
- strategy :
186
- # Since we are running these on a schedule, there is no value in failing fast
187
- # In fact, we want to ensure that all tests run, so that we have a clearer picture of which tests are prone to flaking
188
- fail-fast : false
189
- matrix :
190
- test :
191
- # When running the tests at night, there is no value in splitting the tests across multiple clusters and running them in parallel.
192
- # As a result, we increase the threshold for the tests, since they all run serially on a single cluster
193
- - cluster-name : ' cluster-one'
194
- go-test-args : ' -v -timeout=120m'
195
- # Specifying an empty regex means all tests will be run.
196
- go-test-run-regex : " "
197
- # In our nightly tests, we run the suite of tests using the lower and upper ends of versions that we claim to support
198
- # The versions should mirror: https://docs.solo.io/gloo-edge/latest/reference/support/
199
- version-files :
200
- - label : ' min'
201
- file : ' ./.github/workflows/.env/nightly-tests/min_versions.env'
202
- - label : ' max'
203
- file : ' ./.github/workflows/.env/nightly-tests/max_versions.env'
204
-
205
- steps :
206
- - uses : actions/checkout@v4
207
- with :
208
- ref : v1.17.x
209
- # The dotenv action is used to load key-value pairs from files.
210
- # In this case, the file is specified in the matrix and will contain the versions of the tools to use
211
- - name : Dotenv Action
212
-
213
- id : dotenv
214
- with :
215
- path : ${{ matrix.version-files.file }}
216
- log-variables : true
217
- - name : Prep Go Runner
218
- uses : ./.github/workflows/composite-actions/prep-go-runner
219
- # Set up the KinD cluster that the tests will use
220
- - id : setup-kind-cluster
221
- name : Setup KinD Cluster
222
- uses : ./.github/workflows/composite-actions/setup-kind-cluster
223
- with :
224
- cluster-name : ${{ matrix.test.cluster-name }}
225
- kind-node-version : ${{ steps.dotenv.outputs.node_version }}
226
- kind-version : ${{ steps.dotenv.outputs.kind_version }}
227
- kubectl-version : ${{ steps.dotenv.outputs.kubectl_version }}
228
- helm-version : ${{ steps.dotenv.outputs.helm_version }}
229
- istio-version : ${{ steps.dotenv.outputs.istio_version }}
230
- # Run the tests
231
- - id : run-tests
232
- name : Run Kubernetes e2e Tests
233
- uses : ./.github/workflows/composite-actions/kubernetes-e2e-tests
234
- with :
235
- cluster-name : ${{ matrix.test.cluster-name }}
236
- test-args : ${{ matrix.test.go-test-args }}
237
- run-regex : ${{ matrix.test.go-test-run-regex }}
238
- istio-version : ${{ steps.dotenv.outputs.istio_version }}
239
- matrix-label : ${{ matrix.version-files.label }}
240
-
241
105
regression_tests_on_demand :
242
106
name : on demand regression tests
243
107
if : ${{ github.event_name == 'workflow_dispatch' && inputs.run-regression && inputs.branch == 'workflow_initiating_branch' }}
@@ -257,87 +121,6 @@ jobs:
257
121
ref : ${{ github.ref_name }}
258
122
- uses : ./.github/workflows/composite-actions/regression-tests
259
123
260
- regression_tests_main :
261
- name : main regression tests
262
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-regression && inputs.branch == 'main') || github.event.schedule == '0 5 * * *' }}
263
- runs-on : ubuntu-22.04
264
- timeout-minutes : 60
265
- # Previously, there was an environment variable, RELEASED_VERSION="LATEST" set. This made use of some internal code:
266
- # https://github.com/solo-io/gloo/blob/main/test/kube2e/util.go#L229-L241
267
- # which modified our testing process to pull the latest beta release.
268
- #
269
- # NOW, however, running this job is the same as normal CI. (building a local chart, then using it)
270
- strategy :
271
- fail-fast : false
272
- matrix :
273
- # TODO:
274
- # As part of the end_to_end_tests_main job, we added support for importing versions from a .env file
275
- # We should extend the support/usage of those .env files to these other jobs.
276
- # The tests are currently in flux, and some of these regression tests are being migrated, so we decided
277
- # to limit the scope (and potentially unnecessary work) for now
278
- kube-e2e-test-type : ['gateway', 'gloo', 'upgrade']
279
- kube-version : [ { node: 'v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72', kubectl: 'v1.27.3', kind: 'v0.20.0', helm: 'v3.13.2' },
280
- { node: 'v1.31.0@sha256:53df588e04085fd41ae12de0c3fe4c72f7013bba32a20e7325357a1ac94ba865', kubectl: 'v1.31.0', kind: 'v0.24.0', helm: 'v3.14.4' }]
281
- image-variant :
282
- - standard
283
- steps :
284
- - uses : actions/checkout@v4
285
- with :
286
- ref : main
287
- - uses : ./.github/workflows/composite-actions/regression-tests
288
-
289
- regression_tests_17 :
290
- name : v1.17.x regression tests
291
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-regression && inputs.branch == 'v1.17.x') || github.event.schedule == '0 6 * * 1' }}
292
- runs-on : ubuntu-22.04
293
- timeout-minutes : 60
294
- strategy :
295
- fail-fast : false
296
- matrix :
297
- # ingress are deprecated from 1.17. Ref: https://solo-io-corp.slack.com/archives/G01EERAK3KJ/p1716389614777799
298
- kube-e2e-test-type : [ 'gateway', 'gloo', 'helm', 'upgrade' ]
299
- kube-version : [ { node: 'v1.25.16@sha256:5da57dfc290ac3599e775e63b8b6c49c0c85d3fec771cd7d55b45fae14b38d3b', kubectl: 'v1.25.16', kind: 'v0.20.0', helm: 'v3.13.2' },
300
- { node: 'v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245', kubectl: 'v1.29.2', kind: 'v0.20.0', helm: 'v3.14.4' } ]
301
- steps :
302
- - uses : actions/checkout@v4
303
- with :
304
- ref : v1.17.x
305
- - uses : ./.github/workflows/composite-actions/regression-tests
306
-
307
- regression_tests_16 :
308
- name : v1.16.x regression tests
309
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-regression && inputs.branch == 'v1.16.x') || github.event.schedule == '0 7 * * 1' }}
310
- runs-on : ubuntu-22.04
311
- timeout-minutes : 60
312
- strategy :
313
- fail-fast : false
314
- matrix :
315
- kube-e2e-test-type : ['gateway', 'gloo', 'ingress', 'helm', 'gloomtls', 'glooctl', 'upgrade']
316
- kube-version : [ { node: 'v1.25.16@sha256:5da57dfc290ac3599e775e63b8b6c49c0c85d3fec771cd7d55b45fae14b38d3b', kubectl: 'v1.25.16', kind: 'v0.20.0', helm: 'v3.13.2' },
317
- { node: 'v1.28.0@sha256:b7a4cad12c197af3ba43202d3efe03246b3f0793f162afb40a33c923952d5b31', kubectl: 'v1.28.4', kind: 'v0.20.0', helm: 'v3.14.4' }]
318
- steps :
319
- - uses : actions/checkout@v4
320
- with :
321
- ref : v1.16.x
322
- - uses : ./.github/workflows/composite-actions/regression-tests
323
-
324
- regression_tests_15 :
325
- name : v1.15.x regression tests
326
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-regression && inputs.branch == 'v1.15.x') || github.event.schedule == '0 8 * * 1' }}
327
- runs-on : ubuntu-22.04
328
- timeout-minutes : 60
329
- strategy :
330
- fail-fast : false
331
- matrix :
332
- kube-e2e-test-type : ['gateway', 'gloo', 'ingress', 'helm', 'gloomtls', 'glooctl', 'upgrade']
333
- kube-version : [ { node: 'v1.23.13@sha256:ef453bb7c79f0e3caba88d2067d4196f427794086a7d0df8df4f019d5e336b61', kubectl: 'v1.23.17', kind: 'v0.17.0', helm: 'v3.11.2' },
334
- { node: 'v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72', kubectl: 'v1.27.3', kind: 'v0.20.0', helm: 'v3.13.2' } ]
335
- steps :
336
- - uses : actions/checkout@v4
337
- with :
338
- ref : v1.15.x
339
- - uses : ./.github/workflows/composite-actions/regression-tests
340
-
341
124
performance_tests_on_demand :
342
125
name : on demand performance tests
343
126
if : ${{ github.event_name == 'workflow_dispatch' && inputs.run-performance && inputs.branch == 'workflow_initiating_branch' }}
@@ -350,107 +133,11 @@ jobs:
350
133
- uses : ./.github/workflows/composite-actions/prep-go-runner
351
134
- uses : ./.github/workflows/composite-actions/performance-tests
352
135
353
- performance_tests_main :
354
- name : main performance tests
355
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-performance && inputs.branch == 'main') || github.event.schedule == '0 5 * * *' }}
356
- runs-on : ubuntu-22.04
357
- timeout-minutes : 60
358
- steps :
359
- - uses : actions/checkout@v4
360
- with :
361
- ref : main
362
- - uses : ./.github/workflows/composite-actions/prep-go-runner
363
- - uses : ./.github/workflows/composite-actions/performance-tests
364
-
365
- performance_tests_17 :
366
- name : v1.17.x performance tests
367
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-performance && inputs.branch == 'v1.17.x') || github.event.schedule == '0 6 * * 1' }}
368
- runs-on : ubuntu-22.04
369
- timeout-minutes : 60
370
- steps :
371
- - uses : actions/checkout@v4
372
- with :
373
- ref : v1.17.x
374
- - uses : ./.github/workflows/composite-actions/prep-go-runner
375
- - uses : ./.github/workflows/composite-actions/performance-tests
376
-
377
- performance_tests_16 :
378
- name : v1.16.x performance tests
379
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-performance && inputs.branch == 'v1.16.x') || github.event.schedule == '0 7 * * 1' }}
380
- runs-on : ubuntu-22.04
381
- timeout-minutes : 60
382
- steps :
383
- - uses : actions/checkout@v4
384
- with :
385
- ref : v1.16.x
386
- - uses : ./.github/workflows/composite-actions/prep-go-runner
387
- - uses : ./.github/workflows/composite-actions/performance-tests
388
-
389
- performance_tests_15 :
390
- name : v1.15.x performance tests
391
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-performance && inputs.branch == 'v1.15.x') || github.event.schedule == '0 8 * * 1' }}
392
- runs-on : ubuntu-22.04
393
- timeout-minutes : 60
394
- steps :
395
- - uses : actions/checkout@v4
396
- with :
397
- ref : v1.15.x
398
- - uses : ./.github/workflows/composite-actions/prep-go-runner
399
- - uses : ./.github/workflows/composite-actions/performance-tests
400
-
401
- kube_gateway_api_conformance_tests_main :
402
- name : Conformance (branch=main, type=Kubernetes Gateway API, version=${{matrix.kube-version.node}} )
403
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-conformance && inputs.branch == 'main') || github.event.schedule == '0 5 * * *' }}
404
- runs-on : ubuntu-22.04
405
- timeout-minutes : 60
406
- strategy :
407
- fail-fast : false
408
- matrix :
409
- kube-version : [ { node: 'v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72', kubectl: 'v1.27.3', kind: 'v0.20.0', helm: 'v3.13.2' },
410
- { node: 'v1.31.0@sha256:53df588e04085fd41ae12de0c3fe4c72f7013bba32a20e7325357a1ac94ba865', kubectl: 'v1.31.0', kind: 'v0.24.0', helm: 'v3.14.4' }]
411
- image-variant :
412
- - standard
413
- steps :
414
- - uses : actions/checkout@v4
415
- with :
416
- ref : main
417
- - uses : ./.github/workflows/composite-actions/kube-gateway-api-conformance-tests
418
-
419
- kube_gateway_api_conformance_tests_17 :
420
- name : Conformance (branch=v1.17.x, type=Kubernetes Gateway API, version=${{matrix.kube-version.node}} )
421
- if : ${{ (github.event_name == 'workflow_dispatch' && inputs.run-conformance && inputs.branch == 'v1.17.x') || github.event.schedule == '0 6 * * 1' }}
422
- runs-on : ubuntu-22.04
423
- timeout-minutes : 60
424
- strategy :
425
- fail-fast : false
426
- matrix :
427
- kube-version : [ { node: 'v1.25.16@sha256:5da57dfc290ac3599e775e63b8b6c49c0c85d3fec771cd7d55b45fae14b38d3b', kubectl: 'v1.25.16', kind: 'v0.20.0', helm: 'v3.13.2' },
428
- { node: 'v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245', kubectl: 'v1.29.2', kind: 'v0.20.0', helm: 'v3.14.4' } ]
429
- image-variant :
430
- - standard
431
- steps :
432
- - uses : actions/checkout@v4
433
- with :
434
- ref : v1.17.x
435
- - uses : ./.github/workflows/composite-actions/kube-gateway-api-conformance-tests
436
-
437
136
publish_results :
438
137
runs-on : ubuntu-22.04
439
138
timeout-minutes : 5
440
139
if : ${{ always() }}
441
140
needs :
442
- - end_to_end_tests_main
443
- - end_to_end_tests_17
444
- - regression_tests_main
445
- - regression_tests_17
446
- - regression_tests_16
447
- - regression_tests_15
448
- - performance_tests_main
449
- - performance_tests_17
450
- - performance_tests_16
451
- - performance_tests_15
452
- - kube_gateway_api_conformance_tests_main
453
- - kube_gateway_api_conformance_tests_17
454
141
- end_to_end_tests_on_demand
455
142
- regression_tests_on_demand
456
143
- performance_tests_on_demand
@@ -465,18 +152,6 @@ jobs:
465
152
trigger="Gloo OSS Manual run"
466
153
branch=${{ inputs.branch }}
467
154
echo "SLACK_CHANNEL=C0314KESVNV" >> $GITHUB_ENV #slack-integration-testing if manually run
468
- elif [[ ${{github.event.schedule == '0 5 * * *'}} = true ]]; then
469
- trigger="Gloo OSS nightlies"
470
- branch="main"
471
- elif [[ ${{github.event.schedule == '0 6 * * 1'}} = true ]]; then
472
- trigger="Gloo OSS weeklies"
473
- branch="v1.17.x"
474
- elif [[ ${{github.event.schedule == '0 7 * * 1'}} = true ]]; then
475
- trigger="Gloo OSS weeklies"
476
- branch="v1.16.x"
477
- elif [[ ${{github.event.schedule == '0 8 * * 1'}} = true ]]; then
478
- trigger="Gloo OSS nightlies"
479
- branch="v1.15.x"
480
155
fi
481
156
preamble="$trigger ($branch)"
482
157
echo "Setting PREAMBLE as $preamble"
0 commit comments