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