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