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