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