14583393e3c131740759f1f9839b6b3d9a2dc9d7
[releng.git] / jjb / releng / opnfv-docker.yaml
1 ---
2 ##############################################
3 # job configuration for docker build and push
4 ##############################################
5
6 - project:
7
8     name: opnfv-docker
9
10     master: &master
11       stream: master
12       branch: '{stream}'
13       disabled: false
14     danube: &danube
15       stream: danube
16       branch: 'stable/{stream}'
17       disabled: false
18     euphrates: &euphrates
19       stream: euphrates
20       branch: 'stable/{stream}'
21       disabled: false
22     fraser: &fraser
23       stream: fraser
24       branch: 'stable/{stream}'
25       disabled: false
26     gambia: &gambia
27       stream: gambia
28       branch: 'stable/{stream}'
29       disabled: false
30     pharos-tools-receivers: &pharos_tools_receivers
31       receivers: >
32           pberberian@iol.unh.edu
33           sbergeron@iol.unh.edu
34     storperf-receivers: &storperf-receivers
35       receivers: >
36           mark.beierl@emc.com
37     yardstick-receivers: &yardstick-receivers
38       receivers: >
39           limingjiang@huawei.com
40           rexlee8776@gmail.com
41           emma.l.foley@intel.com
42     other-receivers: &other-receivers
43       receivers: ''
44
45     dockerfile: "Dockerfile"
46     dockerdir: "docker"
47     arch_tag: ""
48     extra_build_args: ""
49
50     # This is the dockerhub repo the image will be pushed to as
51     # 'opnfv/{dockerrepo}. See: DOCKER_REPO_NAME parameter.
52     # 'project' is the OPNFV repo we expect to contain the Dockerfile
53     # yamllint disable rule:key-duplicates
54     dockerrepo:
55       # projects with jobs for master
56       - 'releng-anteater':
57           project: 'releng-anteater'
58           <<: *master
59           <<: *other-receivers
60       - 'barometer-collectd':
61           project: 'barometer'
62           dockerdir: 'docker/barometer-collectd'
63           <<: *master
64           <<: *other-receivers
65       - 'barometer-collectd-master':
66           project: 'barometer'
67           dockerdir: '.'
68           dockerfile: 'docker/barometer-collectd-master/Dockerfile'
69           <<: *master
70           <<: *other-receivers
71       - 'barometer-dma':
72           project: 'barometer'
73           dockerdir: 'docker/barometer-dma'
74           <<: *master
75           <<: *other-receivers
76       - 'barometer-grafana':
77           project: 'barometer'
78           dockerdir: 'docker/barometer-grafana'
79           <<: *master
80           <<: *other-receivers
81       - 'barometer-influxdb':
82           project: 'barometer'
83           dockerdir: 'docker/barometer-influxdb'
84           <<: *master
85           <<: *other-receivers
86       - 'barometer-kafka':
87           project: 'barometer'
88           dockerdir: 'docker/barometer-kafka'
89           <<: *master
90           <<: *other-receivers
91       - 'barometer-ves':
92           project: 'barometer'
93           dockerdir: 'docker/barometer-ves'
94           <<: *master
95           <<: *other-receivers
96       - 'barometer-snmp':
97           project: 'barometer'
98           dockerdir: 'docker/barometer-snmp'
99           <<: *master
100           <<: *other-receivers
101       - 'bottlenecks':
102           project: 'bottlenecks'
103           <<: *master
104           <<: *other-receivers
105       - 'clover':
106           project: 'clover'
107           dockerdir: '.'
108           dockerfile: 'docker/Dockerfile'
109           <<: *master
110           <<: *other-receivers
111       - 'clover-ns-nginx-lb':
112           project: 'clover'
113           dockerdir: 'samples/services/nginx/docker'
114           dockerfile: 'subservices/lb/Dockerfile'
115           <<: *master
116           <<: *other-receivers
117       - 'clover-ns-nginx-proxy':
118           project: 'clover'
119           dockerdir: 'samples/services/nginx/docker'
120           dockerfile: 'subservices/proxy/Dockerfile'
121           <<: *master
122           <<: *other-receivers
123       - 'clover-ns-nginx-server':
124           project: 'clover'
125           dockerdir: 'samples/services/nginx/docker'
126           dockerfile: 'subservices/server/Dockerfile'
127           <<: *master
128           <<: *other-receivers
129       - 'clover-ns-snort-ids':
130           project: 'clover'
131           dockerdir: 'samples/services/snort_ids/docker'
132           dockerfile: 'Dockerfile'
133           <<: *master
134           <<: *other-receivers
135       - 'clover-controller':
136           project: 'clover'
137           dockerdir: 'clover/controller'
138           dockerfile: 'docker/Dockerfile'
139           <<: *master
140           <<: *other-receivers
141       - 'clover-collector':
142           project: 'clover'
143           dockerdir: 'clover/collector'
144           dockerfile: 'docker/Dockerfile'
145           <<: *master
146           <<: *other-receivers
147       - 'clover-jmeter-master':
148           project: 'clover'
149           dockerdir: 'clover/tools/jmeter'
150           dockerfile: 'jmeter-master/Dockerfile'
151           <<: *master
152           <<: *other-receivers
153       - 'clover-jmeter-slave':
154           project: 'clover'
155           dockerdir: 'clover/tools/jmeter'
156           dockerfile: 'jmeter-slave/Dockerfile'
157           <<: *master
158           <<: *other-receivers
159       - 'clover-sample-app':
160           project: 'clover'
161           dockerdir: 'samples/scenarios/sample_app'
162           dockerfile: 'Dockerfile'
163           <<: *master
164           <<: *other-receivers
165       - 'clover-ns-modsecurity-crs':
166           project: 'clover'
167           dockerdir: 'samples/services/modsecurity/docker'
168           dockerfile: 'Dockerfile'
169           <<: *master
170           <<: *other-receivers
171       - 'clover-spark':
172           project: 'clover'
173           dockerdir: 'clover/spark/docker/clover-spark'
174           dockerfile: 'Dockerfile'
175           <<: *master
176           <<: *other-receivers
177       - 'clover-spark-submit':
178           project: 'clover'
179           dockerdir: 'clover/spark/docker/spark-submit'
180           dockerfile: 'Dockerfile'
181           <<: *master
182           <<: *other-receivers
183       - 'clover-clovisor':
184           project: 'clover'
185           dockerdir: 'clover/clovisor'
186           dockerfile: 'Dockerfile'
187           <<: *master
188           <<: *other-receivers
189       - 'cperf':
190           project: 'cperf'
191           <<: *master
192           <<: *other-receivers
193       - 'dovetail':
194           project: 'dovetail'
195           <<: *master
196           <<: *other-receivers
197       - 'dovetail-webportal-api':
198           project: 'dovetail-webportal'
199           dockerfile: 'Dockerfile.api'
200           <<: *master
201           <<: *other-receivers
202       - 'dovetail-webportal-web':
203           project: 'dovetail-webportal'
204           dockerfile: 'Dockerfile.web'
205           <<: *master
206           <<: *other-receivers
207       - 'dovetail-webportal-web-onap':
208           project: 'dovetail-webportal'
209           dockerfile: 'Dockerfile.web'
210           extra_build_args: 'CONTAINER=onap GUI=onap-ui'
211           <<: *master
212           <<: *other-receivers
213       - 'nfvbench':
214           project: 'nfvbench'
215           <<: *master
216           <<: *other-receivers
217       - 'pharos-tools-laas-dashboard':
218           project: 'pharos-tools'
219           dockerdir: 'dashboard'
220           dockerfile: 'web/Dockerfile'
221           <<: *master
222           <<: *pharos_tools_receivers
223       - 'pharos-tools-laas-celery':
224           project: 'pharos-tools'
225           dockerdir: 'dashboard'
226           dockerfile: 'worker/Dockerfile'
227           <<: *master
228           <<: *pharos_tools_receivers
229       - 'qtip':
230           project: 'qtip'
231           dockerdir: '.'
232           dockerfile: 'docker/Dockerfile.local'
233           <<: *master
234           <<: *other-receivers
235       - 'qtip-nettest':
236           project: 'qtip'
237           dockerdir: 'contrib/nettest'
238           <<: *master
239           <<: *other-receivers
240       - 'storperf-master':
241           project: 'storperf'
242           dockerdir: 'docker/storperf-master'
243           arch_tag: 'x86_64'
244           <<: *master
245           <<: *storperf-receivers
246       - 'storperf-graphite':
247           project: 'storperf'
248           dockerdir: 'docker/storperf-graphite'
249           arch_tag: 'x86_64'
250           <<: *master
251           <<: *storperf-receivers
252       - 'storperf-httpfrontend':
253           project: 'storperf'
254           dockerdir: 'docker/storperf-httpfrontend'
255           arch_tag: 'x86_64'
256           <<: *master
257           <<: *storperf-receivers
258       - 'storperf-reporting':
259           project: 'storperf'
260           dockerdir: 'docker/storperf-reporting'
261           arch_tag: 'x86_64'
262           <<: *master
263           <<: *storperf-receivers
264       - 'storperf-swaggerui':
265           project: 'storperf'
266           dockerdir: 'docker/storperf-swaggerui'
267           arch_tag: 'x86_64'
268           <<: *master
269           <<: *storperf-receivers
270       - 'yardstick':
271           project: 'yardstick'
272           <<: *master
273           <<: *yardstick-receivers
274       - 'yardstick-ubuntu-18.04':
275           project: 'yardstick'
276           dockerfile: 'Dockerfile_ubuntu18'
277           <<: *master
278           <<: *yardstick-receivers
279       - 'yardstick-image-k8s':
280           project: 'yardstick'
281           dockerdir: 'docker/k8s'
282           <<: *master
283           <<: *yardstick-receivers
284
285       # projects with jobs for euphrates
286       - 'barometer-dma':
287           project: 'barometer'
288           dockerdir: 'docker/barometer-dma'
289           <<: *gambia
290           <<: *other-receivers
291       - 'barometer-collectd':
292           project: 'barometer'
293           dockerdir: 'docker/barometer-collectd'
294           <<: *gambia
295           <<: *other-receivers
296       - 'barometer-collectd-master':
297           project: 'barometer'
298           dockerdir: '.'
299           dockerfile: 'docker/barometer-collectd-master/Dockerfile'
300           <<: *gambia
301           <<: *other-receivers
302       - 'barometer-grafana':
303           project: 'barometer'
304           dockerdir: 'docker/barometer-grafana'
305           <<: *gambia
306           <<: *other-receivers
307       - 'barometer-influxdb':
308           project: 'barometer'
309           dockerdir: 'docker/barometer-influxdb'
310           <<: *gambia
311           <<: *other-receivers
312       - 'barometer-kafka':
313           project: 'barometer'
314           dockerdir: 'docker/barometer-kafka'
315           <<: *gambia
316           <<: *other-receivers
317       - 'barometer-ves':
318           project: 'barometer'
319           dockerdir: 'docker/barometer-ves'
320           <<: *gambia
321           <<: *other-receivers
322       - 'barometer-snmp':
323           project: 'barometer'
324           dockerdir: 'docker/barometer-snmp'
325           <<: *gambia
326           <<: *other-receivers
327       - 'bottlenecks':
328           project: 'bottlenecks'
329           <<: *gambia
330           <<: *other-receivers
331       - 'nfvbench':
332           project: 'nfvbench'
333           <<: *fraser
334           <<: *other-receivers
335       - 'qtip':
336           project: 'qtip'
337           dockerdir: '.'
338           dockerfile: 'docker/Dockerfile.local'
339           <<: *fraser
340           <<: *other-receivers
341       - 'storperf-master':
342           project: 'storperf'
343           dockerdir: 'docker/storperf-master'
344           arch_tag: 'x86_64'
345           <<: *gambia
346           <<: *storperf-receivers
347       - 'storperf-graphite':
348           project: 'storperf'
349           dockerdir: 'docker/storperf-graphite'
350           arch_tag: 'x86_64'
351           <<: *gambia
352           <<: *storperf-receivers
353       - 'storperf-httpfrontend':
354           project: 'storperf'
355           dockerdir: 'docker/storperf-httpfrontend'
356           arch_tag: 'x86_64'
357           <<: *gambia
358           <<: *storperf-receivers
359       - 'storperf-reporting':
360           project: 'storperf'
361           dockerdir: 'docker/storperf-reporting'
362           arch_tag: 'x86_64'
363           <<: *gambia
364           <<: *storperf-receivers
365       - 'storperf-swaggerui':
366           project: 'storperf'
367           dockerdir: 'docker/storperf-swaggerui'
368           arch_tag: 'x86_64'
369           <<: *gambia
370           <<: *storperf-receivers
371       - 'yardstick':
372           project: 'yardstick'
373           <<: *gambia
374           <<: *yardstick-receivers
375       # projects with jobs for fraser
376       - 'bottlenecks':
377           project: 'bottlenecks'
378           <<: *fraser
379           <<: *other-receivers
380       - 'clover':
381           project: 'clover'
382           dockerdir: '.'
383           dockerfile: 'docker/Dockerfile'
384           <<: *fraser
385           <<: *other-receivers
386       - 'clover-ns-nginx-lb':
387           project: 'clover'
388           dockerdir: 'samples/services/nginx/docker'
389           dockerfile: 'subservices/lb/Dockerfile'
390           <<: *fraser
391           <<: *other-receivers
392       - 'clover-ns-nginx-proxy':
393           project: 'clover'
394           dockerdir: 'samples/services/nginx/docker'
395           dockerfile: 'subservices/proxy/Dockerfile'
396           <<: *fraser
397           <<: *other-receivers
398       - 'clover-ns-nginx-server':
399           project: 'clover'
400           dockerdir: 'samples/services/nginx/docker'
401           dockerfile: 'subservices/server/Dockerfile'
402           <<: *fraser
403           <<: *other-receivers
404       - 'clover-ns-snort-ids':
405           project: 'clover'
406           dockerdir: 'samples/services/snort_ids/docker'
407           dockerfile: 'Dockerfile'
408           <<: *fraser
409           <<: *other-receivers
410       - 'dovetail':
411           project: 'dovetail'
412           <<: *fraser
413           <<: *other-receivers
414     # yamllint enable rule:key-duplicates
415     jobs:
416       - "{dockerrepo}-docker-build-push-{stream}"
417
418 - project:
419
420     name: opnfv-monitor-docker        # projects which only monitor dedicated file or path
421
422     dockerfile: "Dockerfile"
423     dockerdir: "docker"
424     arch_tag: ""
425     extra_build_args: ""
426
427     project:
428       # projects with jobs for master
429       - 'daisy':
430           dockerrepo: 'daisy'
431           <<: *master
432
433     jobs:
434       - '{project}-docker-build-push-monitor-{stream}'
435
436 ########################
437 # job templates
438 ########################
439 - job-template:
440     name: '{dockerrepo}-docker-build-push-{stream}'
441
442     disabled: '{obj:disabled}'
443
444     parameters: &parameters
445       - project-parameter:
446           project: '{project}'
447           branch: '{branch}'
448       - 'opnfv-build-ubuntu-defaults'
449       - string:
450           name: PUSH_IMAGE
451           default: "true"
452           description: "To enable/disable pushing the image to Dockerhub."
453       - string:
454           name: DOCKER_REPO_NAME
455           default: "opnfv/{dockerrepo}"
456           description: "Dockerhub repo to be pushed to."
457       - string:
458           name: DOCKER_DIR
459           default: "{dockerdir}"
460           description: "Directory containing files needed by the Dockerfile"
461       - string:
462           name: COMMIT_ID
463           default: ""
464           description: "commit id to make a snapshot docker image"
465       - string:
466           name: GERRIT_REFNAME
467           default: ""
468           description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1"
469       - string:
470           name: DOCKERFILE
471           default: "{dockerfile}"
472           description: "Dockerfile to use for creating the image."
473       - string:
474           name: ARCH_TAG
475           default: "{arch_tag}"
476           description: "If set, this value will be added to the docker image tag as a prefix"
477       - string:
478           name: EXTRA_BUILD_ARGS
479           default: "{extra_build_args}"
480           description: "Whitespace separated key=value pairs. If set, these args will be used to build docker image"
481
482     properties:
483       - throttle:
484           max-per-node: 1
485           option: 'project'
486
487     scm:
488       - git-scm
489
490     builders: &builders
491       - shell:
492           !include-raw-escape: ./opnfv-docker.sh
493
494     triggers:
495       - pollscm:
496           cron: "*/30 * * * *"
497       - gerrit-trigger-tag-created:
498           project: '{project}'
499
500     publishers:
501       - email:
502           recipients: '{receivers}'
503       - email-jenkins-admins-on-failure
504
505 - job-template:
506     name: '{project}-docker-build-push-monitor-{stream}'
507     disabled: '{obj:disabled}'
508     parameters: *parameters
509
510     scm:
511       - git-scm
512
513     builders: *builders
514
515     # trigger only matching the file name
516     triggers:
517       - gerrit:
518           trigger-on:
519             - change-merged-event
520             - comment-added-contains-event:
521                 comment-contains-value: 'remerge'
522           projects:
523             - project-compare-type: 'ANT'
524               project-pattern: '{project}'
525               branches:
526                 - branch-compare-type: 'ANT'
527                   branch-pattern: '**/{branch}'
528               file-paths:
529                 - compare-type: ANT
530                   pattern: 'docker/**'