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