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