1
- name : Publish binaries and Docker image
1
+ name : Release binaries and Docker image
2
2
3
3
# Runs when a release is published
4
4
5
5
# Build and publish binaries and release Docker image
6
- # Test Docker image
6
+ #
7
+ # NOTE: completion of this task will trigger verifyuserexperience.yaml
8
+ # which will test the released image (with released charts)
7
9
8
10
on :
9
11
release :
@@ -89,214 +91,4 @@ jobs:
89
91
tags : ${{ env.OWNER }}/iter8:${{ env.VERSION }},${{ env.OWNER }}/iter8:${{ env.MAJOR_MINOR_VERSION }},${{ env.OWNER }}/iter8:latest
90
92
push : true
91
93
build-args : |
92
- TAG=v${{ env.VERSION }}
93
-
94
- kubernetes-http-experiment :
95
- name : Kubernetes HTTP load test
96
- needs : build-and-push
97
- runs-on : ubuntu-latest
98
- steps :
99
- - name : Install Iter8
100
- run :
GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected]
101
- - name : Start kind cluster
102
-
103
- with :
104
- wait : 300s
105
- - name : Create httpbin application
106
- run : |
107
- kubectl create deployment httpbin --image=kennethreitz/httpbin
108
- kubectl expose deployment httpbin --type=ClusterIP --port=80
109
- kubectl wait --for=condition=available --timeout=60s deploy/httpbin
110
- - name : Install controller
111
- run : |
112
- helm install --repo https://iter8-tools.github.io/iter8 iter8 controller --set logLevel=trace
113
- kubectl rollout status --watch --timeout=60s statefulset/iter8
114
- - name : iter8 k launch
115
- run : |
116
- iter8 k launch \
117
- --set tasks={http} \
118
- --set http.url="http://httpbin.default/get" \
119
- --set logLevel=trace
120
- kubectl wait --for=condition=complete --timeout=60s job/default-1-job
121
-
122
- - name : Get Kubernetes status
123
- run : |
124
- kubectl get all
125
-
126
- - name : Try other iter8 k commands
127
- run : |
128
- iter8 k log
129
- iter8 k delete
130
- - name : Check GET /httpDashboard
131
- run : |
132
- curl "http://localhost:8080/httpDashboard?namespace=default&experiment=default" -f
133
-
134
- kubernetes-grpc-experiment :
135
- name : Kubernetes gRPC load test
136
- needs : build-and-push
137
- runs-on : ubuntu-latest
138
- steps :
139
- - name : Install Iter8
140
- run :
GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected]
141
- - name : Start kind cluster
142
-
143
- with :
144
- wait : 300s
145
- - name : Create routeguide application
146
- run : |
147
- kubectl create deployment routeguide --image=golang --port=50051 \
148
- -- bash -c "git clone -b v1.52.0 --depth 1 https://github.com/grpc/grpc-go; cd grpc-go/examples/route_guide; sed -i "''" "'"s/localhost//"'" server/server.go; go run server/server.go"
149
- kubectl expose deployment routeguide --port=50051
150
- kubectl wait --for=condition=available --timeout=60s deployment/routeguide
151
- - name : Install controller
152
- run : |
153
- helm install --repo https://iter8-tools.github.io/iter8 iter8 controller --set logLevel=trace
154
- kubectl rollout status --watch --timeout=60s statefulset/iter8
155
- - name : Test gRPC service with grpcurl
156
- run : |
157
- curl -sO https://gist.githubusercontent.com/kalantar/510737f0fd58c0432a08e5b6e45ec97f/raw/524d6660284bf653ce0f29f3a25ed0e913c3df80/grpcurl-routeguide.yaml
158
- kubectl apply -f grpcurl-routeguide.yaml
159
- sleep 180
160
- kubectl logs deploy/sleep
161
- - name : iter8 k launch
162
- run : |
163
- iter8 k launch \
164
- --set tasks={grpc} \
165
- --set grpc.host=routeguide.default:50051 \
166
- --set grpc.protoURL=https://raw.githubusercontent.com/grpc/grpc-go/v1.52.0/examples/route_guide/routeguide/route_guide.proto \
167
- --set grpc.call=routeguide.RouteGuide.GetFeature \
168
- --set grpc.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/unary.json \
169
- --set logLevel=trace
170
- kubectl wait --for=condition=complete --timeout=60s job/default-1-job
171
-
172
- - name : Get Kubernetes status
173
- run : |
174
- kubectl get all
175
-
176
- - name : Try other iter8 k commands
177
- run : |
178
- iter8 k log
179
- iter8 k delete
180
- - name : Check GET /grpcDashboard
181
- run : |
182
- curl "http://localhost:8080/grpcDashboard?namespace=default&experiment=default" -f
183
-
184
- kubernetes-grpc-experiment2 :
185
- name : Kubernetes gRPC load test 2
186
- needs : build-and-push
187
- runs-on : ubuntu-latest
188
- steps :
189
- - name : Install Iter8
190
- run :
GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected]
191
- - name : Start kind cluster
192
-
193
- with :
194
- wait : 300s
195
- - name : Create hello application
196
- run : |
197
- kubectl create deploy hello --image=docker.io/grpc/java-example-hostname:latest --port=50051
198
- kubectl expose deploy hello --port=50051
199
- kubectl wait --for=condition=available --timeout=60s deploy/hello
200
- - name : Install controller
201
- run : |
202
- helm install --repo https://iter8-tools.github.io/iter8 iter8 controller --set logLevel=trace
203
- kubectl rollout status --watch --timeout=60s statefulset/iter8
204
- - name : iter8 k launch
205
- run : |
206
- iter8 k launch \
207
- --set tasks={grpc} \
208
- --set grpc.host="hello.default:50051" \
209
- --set grpc.call="helloworld.Greeter.SayHello" \
210
- --set grpc.protoURL="https://raw.githubusercontent.com/grpc/grpc-go/master/examples/helloworld/helloworld/helloworld.proto" \
211
- --set logLevel=trace
212
- kubectl wait --for=condition=complete --timeout=60s job/default-1-job
213
-
214
- - name : Get Kubernetes status
215
- run : |
216
- kubectl get all
217
-
218
- - name : Try other iter8 k commands
219
- run : |
220
- iter8 k log
221
- iter8 k delete
222
- - name : Check GET /grpcDashboard
223
- run : |
224
- curl "http://localhost:8080/grpcDashboard?namespace=default&experiment=default" -f
225
-
226
- readiness :
227
- name : Kubernetes readiness test
228
- needs : build-and-push
229
- runs-on : ubuntu-latest
230
- steps :
231
- - name : Install Iter8
232
- run :
GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected]
233
- - name : Start kind cluster
234
-
235
- with :
236
- wait : 300s
237
- - name : Create httpbin application
238
- run : |
239
- kubectl create deploy httpbin --image=kennethreitz/httpbin --port=80
240
- kubectl expose deploy httpbin --port=80
241
- - name : Install controller
242
- run : |
243
- helm install --repo https://iter8-tools.github.io/iter8 iter8 controller --set logLevel=trace
244
- kubectl rollout status --watch --timeout=60s statefulset/iter8
245
- - name : k launch with readiness checks
246
- run : |
247
- iter8 k launch \
248
- --set "tasks={ready,http}" \
249
- --set ready.deploy="httpbin" \
250
- --set ready.service="httpbin" \
251
- --set ready.timeout=60s \
252
- --set http.url=http://httpbin.default/get \
253
- --set logLevel=trace
254
- kubectl wait --for=condition=complete --timeout=60s job/default-1-job
255
-
256
- - name : Get Kubernetes status
257
- run : |
258
- kubectl get all
259
-
260
- - name : Check GET /httpDashboard
261
- run : |
262
- curl "http://localhost:8080/httpDashboard?namespace=default&experiment=default" -f
263
-
264
- readiness-with-namespace :
265
- name : Kubernetes readiness test with namespace
266
- needs : build-and-push
267
- runs-on : ubuntu-latest
268
- steps :
269
- - name : Install Iter8
270
- run :
GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected]
271
- - name : Start kind cluster
272
-
273
- with :
274
- wait : 300s
275
- - name : Create httpbin application
276
- run : |
277
- kubectl create deploy httpbin --image=kennethreitz/httpbin --port=80
278
- kubectl expose deploy httpbin --port=80
279
- kubectl create namespace experiments
280
- - name : Install controller
281
- run : |
282
- helm install --repo https://iter8-tools.github.io/iter8 iter8 controller --set logLevel=trace
283
- kubectl rollout status --watch --timeout=60s statefulset/iter8
284
- - name : k launch with readiness checks
285
- run : |
286
- iter8 k launch -n experiments \
287
- --set "tasks={ready,http}" \
288
- --set ready.deploy="httpbin" \
289
- --set ready.service="httpbin" \
290
- --set ready.timeout=60s \
291
- --set ready.namespace=default \
292
- --set http.url=http://httpbin.default/get \
293
- --set logLevel=trace
294
- kubectl wait --for=condition=complete --timeout=60s job/default-1-job
295
-
296
- - name : Get Kubernetes status
297
- run : |
298
- kubectl get all
299
-
300
- - name : Check GET /httpDashboard
301
- run : |
302
- curl "http://localhost:8080/httpDashboard?namespace=default&experiment=default" -f
94
+ TAG=v${{ env.VERSION }}
0 commit comments