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