Merge "Basic Getting Started guide for OPNFV CI"
[releng.git] / jjb / functest / functest-kubernetes-ng.yaml
1 ---
2 - functest-kubernetes-ng-containers: &functest-kubernetes-ng-containers
3     name: 'functest-kubernetes-ng-containers'
4     repo: '{repo}'
5     port: '{port}'
6     container: '{container}'
7     tag: '{tag}'
8
9 - functest-kubernetes-ng-params: &functest-kubernetes-ng-params
10     name: 'functest-kubernetes-ng-params'
11     repo: 'opnfv'
12     port:
13     tag:
14       - v1.20:
15           buildargs:
16           branch: stable/leguer
17           slave: lf-virtual1
18           dependency: 3.12
19           from: s/:leguer$/:v1.20/g
20       - v1.19:
21           buildargs:
22           branch: stable/kali
23           slave: lf-virtual1
24           dependency: 3.11
25           from: s/:kali$/:v1.19/g
26       - v1.18:
27           branch: stable/kali
28           slave: lf-virtual1
29           dependency: 3.11
30           buildargs: --build-arg K8S_TAG=1.18
31           from: s/:kali$/:v1.18/g
32       - v1.17:
33           buildargs:
34           branch: stable/jerma
35           slave: lf-virtual1
36           dependency: 3.10
37           from: s/:jerma$/:v1.17/g
38       - v1.16:
39           branch: stable/jerma
40           slave: lf-virtual1
41           dependency: 3.10
42           buildargs: --build-arg K8S_TAG=1.16
43           from: s/:jerma$/:v1.16/g
44       - v1.15:
45           buildargs:
46           branch: stable/iruya
47           slave: lf-virtual1
48           dependency: 3.9
49           from: s/:iruya$/:v1.15/g
50       - v1.14:
51           branch: stable/iruya
52           slave: lf-virtual1
53           dependency: 3.9
54           buildargs: --build-arg K8S_TAG=1.14
55           from: s/:iruya$/:v1.14/g
56       - v1.13:
57           buildargs:
58           branch: stable/hunter
59           slave: lf-virtual1
60           dependency: 3.9
61           from: s/:hunter$/:v1.13/g
62
63 - functest-kubernetes-ng-jobs: &functest-kubernetes-ng-jobs
64     name: 'functest-kubernetes-ng-jobs'
65     current-parameters: true
66
67 - parameter:
68     name: functest-kubernetes-ng-slave
69     parameters:
70       - label:
71           name: slave
72           default: '{slave}'
73
74
75 - functest-kubernetes-ng-build-containers: &functest-kubernetes-ng-build-containers
76     name: 'functest-kubernetes-ng-build-containers'
77     <<: *functest-kubernetes-ng-containers
78     ref_arg: '{ref_arg}'
79     path: '{path}'
80     buildargs: '{buildargs}'
81     from: '{from}'
82
83 - builder:
84     name: functest-kubernetes-ng-build-containers
85     builders:
86       - shell: |
87           set +x
88           if [ "{repo}" = "_" ]; then
89             image={container}:{tag}
90           elif [ "{port}" = "None" ]; then
91             image={repo}/{container}:{tag}
92           else
93             image={repo}:{port}/{container}:{tag}
94           fi
95           build_args=""
96           if [ "{buildargs}" != "None" ]; then
97             build_args="{buildargs}"
98           fi
99           if [ "{ref_arg}" != "None" ]; then
100             build_args="$build_args --build-arg {ref_arg}={ref}"
101           fi
102           cd {path}
103           if [ "{from}" != "None" ]; then
104               sed -i {from} Dockerfile
105           fi
106           sudo docker build $build_args \
107             --pull=false --no-cache --force-rm=true \
108             -t $image .
109
110 - scm:
111     name: functest-kubernetes-ng-scm
112     scm:
113       - git:
114           url: 'https://gerrit.opnfv.org/gerrit/functest-kubernetes'
115           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
116           branches:
117             - '{ref}'
118
119 - functest-kubernetes-ng-dep: &functest-kubernetes-ng-dep
120     name: 'functest-kubernetes-ng-containers'
121     repo: '{repo}'
122     port: '{port}'
123     tag: '{tag}'
124     dependency: '{dependency}'
125
126 - builder:
127     name: functest-kubernetes-ng-pull-dep-images
128     builders:
129       - shell: |
130           set +x
131           if [ "_" = "_" ]; then
132             image=alpine:{dependency}
133           elif [ "_" = "None" ]; then
134             image=_/alpine:{dependency}
135           else
136             image=_:/alpine{dependency}
137           fi
138           sudo docker pull $image || true
139
140 - builder:
141     name: functest-kubernetes-ng-remove-dep-images
142     builders:
143       - shell: |
144           set +x
145           if [ "_" = "_" ]; then
146             image=alpine:{dependency}
147           elif [ "_" = "None" ]; then
148             image=_/alpine:{dependency}
149           else
150             image=_:/alpine{dependency}
151           fi
152           sudo docker rmi $image || true
153
154 - job-template:
155     name: 'functest-kubernetes-ng-{repo}-{tag}-dep-pull'
156     parameters:
157       - functest-kubernetes-ng-slave:
158           slave: '{slave}'
159     builders:
160       - functest-kubernetes-ng-pull-dep-images:
161           <<: *functest-kubernetes-ng-dep
162
163 - project:
164     name: 'functest-kubernetes-ng-{repo}-{tag}-dep-pull'
165     <<: *functest-kubernetes-ng-params
166     jobs:
167       - 'functest-kubernetes-ng-{repo}-{tag}-dep-pull'
168
169 - job-template:
170     name: 'functest-kubernetes-ng-{repo}-{tag}-dep-rmi'
171     parameters:
172       - functest-kubernetes-ng-slave:
173           slave: '{slave}'
174     builders:
175       - functest-kubernetes-ng-remove-dep-images:
176           <<: *functest-kubernetes-ng-dep
177
178 - project:
179     name: 'functest-kubernetes-ng-{repo}-{tag}-dep-rmi'
180     <<: *functest-kubernetes-ng-params
181     jobs:
182       - 'functest-kubernetes-ng-{repo}-{tag}-dep-rmi'
183
184
185 - builder:
186     name: functest-kubernetes-ng-push-containers
187     builders:
188       - shell: |
189           set +x
190           if [ "{repo}" = "_" ]; then
191             image={container}:{tag}
192           elif [ "{port}" = "None" ]; then
193             image={repo}/{container}:{tag}
194           else
195             image={repo}:{port}/{container}:{tag}
196           fi
197           sudo docker push $image
198
199 - trigger:
200     name: functest-kubernetes-ng-commit
201     triggers:
202       - pollscm:
203           cron: "*/30 * * * *"
204
205 - job-template:
206     name: 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
207     parameters:
208       - functest-kubernetes-ng-slave:
209           slave: '{slave}'
210     scm:
211       - functest-kubernetes-ng-scm:
212           ref: '{branch}'
213     builders:
214       - functest-kubernetes-ng-build-containers:
215           <<: *functest-kubernetes-ng-build-containers
216           ref: '{branch}'
217           buildargs: '{buildargs}'
218       - functest-kubernetes-ng-push-containers:
219           <<: *functest-kubernetes-ng-build-containers
220           ref: '{branch}'
221
222 - project:
223     name: functest-kubernetes-ng-opnfv-functest-kubernetes-core-{tag}-build
224     <<: *functest-kubernetes-ng-params
225     container: functest-kubernetes-core
226     ref_arg: BRANCH
227     path: docker/core
228     jobs:
229       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
230
231 - project:
232     name: functest-kubernetes-ng-opnfv-functest-kubernetes-healthcheck-{tag}-build
233     <<: *functest-kubernetes-ng-params
234     container: functest-kubernetes-healthcheck
235     ref_arg:
236     path: docker/healthcheck
237     jobs:
238       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
239
240 - project:
241     name: functest-kubernetes-ng-opnfv-functest-kubernetes-cnf-{tag}-build
242     <<: *functest-kubernetes-ng-params
243     container: functest-kubernetes-cnf
244     ref_arg: BRANCH
245     path: docker/cnf
246     jobs:
247       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
248
249 - project:
250     name: functest-kubernetes-ng-opnfv-functest-kubernetes-security-{tag}-build
251     <<: *functest-kubernetes-ng-params
252     container: functest-kubernetes-security
253     ref_arg: BRANCH
254     path: docker/security
255     jobs:
256       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
257
258 - project:
259     name: functest-kubernetes-ng-opnfv-functest-kubernetes-smoke-{tag}-build
260     <<: *functest-kubernetes-ng-params
261     container: functest-kubernetes-smoke
262     ref_arg:
263     path: docker/smoke
264     jobs:
265       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
266
267 - project:
268     name: functest-kubernetes-ng-opnfv-functest-kubernetes-benchmarking-{tag}-build
269     <<: *functest-kubernetes-ng-params
270     container: functest-kubernetes-benchmarking
271     ref_arg:
272     path: docker/benchmarking
273     jobs:
274       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-build'
275
276
277 - job-template:
278     name: 'functest-kubernetes-ng-{tag}-docker'
279     project-type: multijob
280     triggers:
281       - functest-kubernetes-ng-commit
282     scm:
283       - functest-kubernetes-ng-scm:
284           ref: '{branch}'
285     parameters:
286       - functest-kubernetes-ng-slave:
287           slave: '{slave}'
288     properties:
289       - build-blocker:
290           use-build-blocker: true
291           blocking-level: 'NODE'
292           blocking-jobs:
293             - '^functest-kubernetes-ng-{tag}-(daily|docker|review)$'
294     builders:
295       - multijob:
296           name: remove dependency
297           projects:
298             - name: 'functest-kubernetes-ng-{repo}-{tag}-dep-rmi'
299               <<: *functest-kubernetes-ng-jobs
300       - multijob:
301           name: pull dependency
302           projects:
303             - name: 'functest-kubernetes-ng-{repo}-{tag}-dep-pull'
304               <<: *functest-kubernetes-ng-jobs
305       - multijob:
306           name: build opnfv/functest-kubernetes-core
307           projects:
308             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-core-{tag}-build'
309               <<: *functest-kubernetes-ng-jobs
310       - multijob:
311           name: build containers
312           projects:
313             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-healthcheck-{tag}-build'
314               <<: *functest-kubernetes-ng-jobs
315             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-cnf-{tag}-build'
316               <<: *functest-kubernetes-ng-jobs
317             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-security-{tag}-build'
318               <<: *functest-kubernetes-ng-jobs
319       - multijob:
320           name: build opnfv/functest-kubernetes-smoke
321           projects:
322             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-smoke-{tag}-build'
323               <<: *functest-kubernetes-ng-jobs
324       - multijob:
325           name: build opnfv/functest-kubernetes-benchmarking
326           projects:
327             - name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-benchmarking-{tag}-build'
328               <<: *functest-kubernetes-ng-jobs
329
330 - builder:
331     name: functest-kubernetes-ng-trivy
332     builders:
333       - shell: |
334           sudo apt-get update && sudo apt-get install curl -y
335           curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b .
336           if [ "{repo}" = "_" ]; then
337             image={container}:{tag}
338           elif [ "{port}" = "None" ]; then
339             image={repo}/{container}:{tag}
340           else
341             image={repo}:{port}/{container}:{tag}
342           fi
343           ./trivy --exit-code 1 $image
344
345 - job-template:
346     name: 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
347     triggers:
348       - timed: '@daily'
349     parameters:
350       - functest-kubernetes-ng-slave:
351           slave: '{slave}'
352     builders:
353       - functest-kubernetes-ng-trivy:
354           <<: *functest-kubernetes-ng-containers
355
356 - project:
357     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-core-trivy'
358     <<: *functest-kubernetes-ng-params
359     container: 'functest-kubernetes-core'
360     jobs:
361       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
362
363 - project:
364     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-healthcheck-trivy'
365     <<: *functest-kubernetes-ng-params
366     container: 'functest-kubernetes-healthcheck'
367     jobs:
368       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
369
370 - project:
371     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-cnf-trivy'
372     <<: *functest-kubernetes-ng-params
373     container: 'functest-kubernetes-cnf'
374     jobs:
375       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
376
377 - project:
378     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-security-trivy'
379     <<: *functest-kubernetes-ng-params
380     container: 'functest-kubernetes-security'
381     jobs:
382       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
383
384 - project:
385     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-smoke-trivy'
386     <<: *functest-kubernetes-ng-params
387     container: 'functest-kubernetes-smoke'
388     jobs:
389       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
390
391 - project:
392     name: 'functest-kubernetes-ng-opnfv-functest-kubernetes-benchmarking-trivy'
393     <<: *functest-kubernetes-ng-params
394     container: 'functest-kubernetes-benchmarking'
395     jobs:
396       - 'functest-kubernetes-ng-{repo}-{container}-{tag}-trivy'
397
398 - project:
399     name: 'functest-kubernetes-ng'
400     <<: *functest-kubernetes-ng-params
401     jobs:
402       - 'functest-kubernetes-ng-{tag}-docker'
403
404 - view:
405     name: functest-kubernetes-ng-docker
406     view-type: list
407     columns:
408       - status
409       - weather
410       - job
411       - last-success
412       - last-failure
413       - last-duration
414     regex: ^functest-kubernetes-ng-[a-z0-9.]+-docker$
415
416 - view:
417     name: functest-kubernetes-ng-trivy
418     view-type: list
419     columns:
420       - status
421       - weather
422       - job
423       - last-success
424       - last-failure
425       - last-duration
426     regex: ^functest-kubernetes-ng-[a-z0-9-.]+-trivy$