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