@@ -2,15 +2,64 @@ name: End-to-end tests
2
2
3
3
on :
4
4
workflow_dispatch :
5
- push :
6
- tags :
7
- - " *"
5
+ inputs :
6
+ mode :
7
+ type : choice
8
+ description : Test mode
9
+ options :
10
+ - install
11
+ - upgrade
12
+ version :
13
+ description : App version [local|next|prev|v1.17.0]
14
+ required : true
15
+ default : local
16
+ CONTROLLER_ARGS :
17
+ description : Controller helm flags
18
+ DEFAULTS_ARGS :
19
+ description : Defaults helm flags
20
+ LATEST :
21
+ description : Use latest images
22
+ type : boolean
23
+ default : false
24
+ K3S_VERSION :
25
+ description : K3S version
26
+ type : choice
27
+ default : ' v1.30'
28
+ options :
29
+ - v1.23
30
+ - v1.24
31
+ - v1.25
32
+ - v1.26
33
+ - v1.27
34
+ - v1.28
35
+ - v1.29
36
+ - v1.30
37
+ - v1.31
38
+
39
+ # PR: install + tests from PR
8
40
pull_request :
9
41
branches :
10
42
- " main"
43
+
44
+ # Nightly:
45
+ # - install from main with latest images (to check if we can tag and release)
46
+ # - install tagged charts (refrence job to make sure product works, most stable case)
11
47
schedule :
12
48
- cron : ' 0 21 * * *'
13
49
50
+ # Release (stable, rc, beta):
51
+ # - install release
52
+ # - upgrade from previous stable to this release
53
+ # - install on oldest supported k8s
54
+ workflow_run :
55
+ workflows : ["Release helm chart"]
56
+ types :
57
+ - completed
58
+
59
+ concurrency :
60
+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
61
+ cancel-in-progress : true
62
+
14
63
defaults :
15
64
run :
16
65
shell : bash
@@ -24,15 +73,34 @@ jobs:
24
73
strategy :
25
74
fail-fast : false
26
75
matrix :
27
- mode : [install, upgrade]
76
+ mode : ${{
77
+ (github.event_name == 'workflow_run') && fromJSON('["install", "upgrade"]') ||
78
+ (github.event_name == 'schedule') && fromJSON('["install"]') ||
79
+ (github.event_name == 'pull_request') && fromJSON('["install"]') ||
80
+ fromJSON(format('["{0}"]', inputs.mode || 'install')) }}
81
+ version : ${{
82
+ (github.event_name == 'workflow_run') && fromJSON('["next"]') ||
83
+ (github.event_name == 'schedule') && fromJSON('["local", "next"]') ||
84
+ (github.event_name == 'pull_request') && fromJSON('["local"]') ||
85
+ fromJSON(format('["{0}"]', inputs.version || 'local')) }}
86
+ k3s : ${{ (github.event_name == 'workflow_run') && fromJSON('["k3d", "1.23"]') || fromJSON(format('["{0}"]', inputs.K3S_VERSION || 'k3d' )) }}
87
+ exclude :
88
+ - k3s : ${{ (github.event_name == 'workflow_run') && '1.23' }}
89
+ mode : upgrade
28
90
29
91
# Run schedule workflows only on original repo, not forks
30
- if : github.event_name != 'schedule' || github.repository_owner == 'kubewarden'
92
+ if : (github.event_name != 'schedule' || github.repository_owner == 'kubewarden') &&
93
+ (github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success')
31
94
32
95
runs-on : ubuntu-latest
33
96
steps :
34
- - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
35
- - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
97
+
98
+ - uses : actions/checkout@v4
99
+ if : ${{ matrix.version == 'local' }}
100
+ - run : helm repo add kubewarden https://charts.kubewarden.io
101
+ if : ${{ matrix.version != 'local' }}
102
+
103
+ - uses : actions/checkout@v4
36
104
with :
37
105
repository : ${{ github.repository_owner }}/kubewarden-end-to-end-tests
38
106
path : e2e-tests
@@ -48,16 +116,39 @@ jobs:
48
116
- name : " Create k3d cluster"
49
117
run : |
50
118
wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAG=${{ env.K3D_VERSION }} sudo --preserve-env=TAG bash
51
- k3d cluster create ${{ env.K3D_CLUSTER_NAME }} --agents 1
119
+ # Use k3d as placehoholder for default (empty) k3s version
120
+ [[ "${{ matrix.k3s }}" != "k3d" ]] && export K3S=${{ matrix.k3s }}
121
+ make --directory e2e-tests cluster
122
+ env :
123
+ CLUSTER_NAME : ${{ env.K3D_CLUSTER_NAME }}
124
+
125
+ - name : Install previous kubewarden
126
+ if : ${{ matrix.mode == 'upgrade' }}
127
+ working-directory : ./e2e-tests
128
+ run : VERSION=prev REPO_NAME=kubewarden CHARTS_LOCATION=kubewarden make install
129
+ env :
130
+ CLUSTER_NAME : ${{ env.K3D_CLUSTER_NAME }}
52
131
53
- - name : Execute tests
54
- working-directory : e2e-tests
132
+ - name : Install kubewarden and run tests
133
+ working-directory : ./ e2e-tests
55
134
run : |
56
- make KUBEWARDEN_CHARTS_LOCATION=../charts \
57
- CLUSTER_NAME=${{ env.K3D_CLUSTER_NAME }} \
58
- ${{matrix.mode}} tests audit-scanner-installation.bats
135
+ # Additional environment setup
136
+ [[ "${{ matrix.version }}" == 'local' ]] && CHARTS_LOCATION=../charts || CHARTS_LOCATION=kubewarden
137
+ [[ "${{ github.event_name }}" == 'schedule' && "${{ matrix.version }}" == 'local' ]] && LATEST=true
138
+ export CHARTS_LOCATION LATEST
139
+
140
+ make ${{ matrix.mode }} tests audit-scanner-installation.bats
141
+ ./scripts/helmer.sh debug
142
+ make uninstall
143
+ env :
144
+ CLUSTER_NAME : ${{ env.K3D_CLUSTER_NAME }}
145
+ VERSION : ${{ matrix.version }}
146
+ LATEST : ${{ inputs.LATEST }}
147
+ DEFAULTS_ARGS : ${{ inputs.DEFAULTS_ARGS }}
148
+ CONTROLLER_ARGS : ${{ inputs.CONTROLLER_ARGS }}
59
149
60
150
- name : Clean Up
61
151
if : always()
62
- run : |
63
- k3d cluster delete ${{ env.K3D_CLUSTER_NAME }}
152
+ run : make --directory e2e-tests clean
153
+ env :
154
+ CLUSTER_NAME : ${{ env.K3D_CLUSTER_NAME }}
0 commit comments