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