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