Making docker deploy script generic
[releng.git] / jjb / releng / automate.yml
1 - project:
2     name: utils-automate
3     stream:
4         - master:
5             branch: '{stream}'
6
7     module:
8         - 'testapi'
9         - 'reporting'
10
11     phase:
12         - 'docker-deploy':
13             slave-label: 'testresults'
14         - 'generate-doc'
15
16     jobs:
17         - '{module}-automate-{stream}'
18         - '{module}-automate-{phase}-{stream}'
19         - '{module}-verify-{stream}'
20
21     project: 'releng'
22
23 - job:
24     name: 'testapi-mongodb-backup'
25
26     parameters:
27         - label:
28             name: SLAVE_LABEL
29             default: 'testresults'
30             description: 'Slave label on Jenkins'
31         - project-parameter:
32             project: 'releng'
33             branch: 'master'
34         - string:
35             name: GIT_BASE
36             default: https://gerrit.opnfv.org/gerrit/releng
37             description: 'Git URL to use on this Jenkins Slave'
38
39     scm:
40         - git-scm
41
42     triggers:
43         - timed: '@weekly'
44
45     builders:
46         - mongodb-backup
47
48 - job-template:
49     name: '{module}-verify-{stream}'
50
51     parameters:
52         - project-parameter:
53             project: '{project}'
54             branch: '{branch}'
55         - 'opnfv-build-ubuntu-defaults'
56
57     scm:
58         - git-scm-gerrit
59
60     triggers:
61         - gerrit:
62             server-name: 'gerrit.opnfv.org'
63             trigger-on:
64                 - patchset-created-event:
65                     exclude-drafts: 'false'
66                     exclude-trivial-rebase: 'false'
67                     exclude-no-code-change: 'false'
68                 - draft-published-event
69                 - comment-added-contains-event:
70                     comment-contains-value: 'recheck'
71                 - comment-added-contains-event:
72                     comment-contains-value: 'reverify'
73             projects:
74               - project-compare-type: 'ANT'
75                 project-pattern: '{project}'
76                 branches:
77                   - branch-compare-type: 'ANT'
78                     branch-pattern: '**/{branch}'
79                 file-paths:
80                   - compare-type: 'ANT'
81                     pattern: 'utils/test/{module}/**'
82
83     builders:
84         - shell: |
85             cd ./utils/test/{module}/
86             bash run_test.sh
87             cp *.xml $WORKSPACE
88
89     publishers:
90         - junit:
91             results: nosetests.xml
92         - cobertura:
93             report-file: "coverage.xml"
94             only-stable: "true"
95             health-auto-update: "false"
96             stability-auto-update: "false"
97             zoom-coverage-chart: "true"
98             targets:
99                 - files:
100                     healthy: 10
101                     unhealthy: 20
102                     failing: 30
103                 - method:
104                     healthy: 50
105                     unhealthy: 40
106                     failing: 30
107
108 - job-template:
109     name: '{module}-automate-{stream}'
110
111     project-type: multijob
112
113     properties:
114         - throttle:
115             enabled: true
116             max-total: 1
117             max-per-node: 1
118             option: 'project'
119
120     parameters:
121         - project-parameter:
122             project: '{project}'
123             branch: '{branch}'
124         - string:
125             name: DOCKER_TAG
126             default: 'latest'
127             description: 'Tag name for {module} docker image'
128         - string:
129             name: MODULE_NAME
130             default: '{module}'
131             description: "Name of the module"
132         - 'opnfv-build-defaults'
133
134     scm:
135         - git-scm
136
137     wrappers:
138         - ssh-agent-wrapper
139         - timeout:
140             timeout: 360
141             fail: true
142
143     triggers:
144         - gerrit:
145             server-name: 'gerrit.opnfv.org'
146             trigger-on:
147                 - change-merged-event
148                 - comment-added-contains-event:
149                     comment-contains-value: 'remerge'
150             projects:
151               - project-compare-type: 'ANT'
152                 project-pattern: '{project}'
153                 branches:
154                   - branch-compare-type: 'ANT'
155                     branch-pattern: '**/{branch}'
156                 file-paths:
157                   - compare-type: 'ANT'
158                     pattern: 'utils/test/{module}/**'
159
160     builders:
161         - description-setter:
162             description: "Built on $NODE_NAME"
163         - docker-update
164         - multijob:
165             name: docker-deploy
166             condition: SUCCESSFUL
167             projects:
168                 - name: '{module}-automate-docker-deploy-{stream}'
169                   current-parameters: false
170                   predefined-parameters: |
171                     GIT_BASE=$GIT_BASE
172                   node-label-name: SLAVE_LABEL
173                   node-label: testresults
174                   kill-phase-on: FAILURE
175                   abort-all-job: true
176         - multijob:
177             name: generate-doc
178             condition: SUCCESSFUL
179             projects:
180                 - name: '{module}-automate-generate-doc-{stream}'
181                   current-parameters: true
182                   kill-phase-on: FAILURE
183                   abort-all-job: true
184
185     publishers:
186         - 'email-publisher'
187
188 - job-template:
189     name: '{module}-automate-{phase}-{stream}'
190
191     properties:
192         - throttle:
193             enabled: true
194             max-per-node: 1
195             option: 'project'
196
197     parameters:
198         - project-parameter:
199             project: '{project}'
200             branch: '{branch}'
201
202     wrappers:
203         - ssh-agent-wrapper
204         - timeout:
205             timeout: 120
206             fail: true
207
208     scm:
209         - git-scm
210
211     builders:
212         - description-setter:
213             description: "Built on $NODE_NAME"
214         - '{module}-automate-{phase}-macro'
215
216 ################################
217 # job builders
218 ################################
219 - builder:
220     name: 'docker-update'
221     builders:
222         - shell:
223             !include-raw: ./docker-update.sh
224
225 - builder:
226     name: 'testapi-automate-generate-doc-macro'
227     builders:
228         - 'testapi-doc-build'
229         - 'upload-doc-artifact'
230
231 - builder:
232     name: 'testapi-doc-build'
233     builders:
234         - shell: |
235             bash ./utils/test/testapi/htmlize/doc-build.sh
236
237 - builder:
238     name: 'upload-doc-artifact'
239     builders:
240         - shell: |
241             bash ./utils/test/testapi/htmlize/push-doc-artifact.sh
242
243 - builder:
244     name: 'reporting-automate-generate-doc-macro'
245     builders:
246         - shell: echo "To Be Done"
247
248 - builder:
249     name: 'testapi-automate-docker-deploy-macro'
250     builders:
251         - shell: |
252             bash ./jjb/releng/docker-deploy.sh "sudo docker run -dti -p 8082:8000
253             -e mongodb_url=mongodb://172.17.0.1:27017
254             -e base_url=http://testresults.opnfv.org/test opnfv/testapi" \
255             "http://testresults.opnfv.org/test/swagger/APIs" "testapi"
256
257 - builder:
258     name: 'reporting-automate-docker-deploy-macro'
259     builders:
260         - shell: |
261             bash ./jjb/releng/docker-deploy.sh "sudo docker run -itd -p 8084:8000 opnfv/reporting" \
262             "http://testresults.opnfv.org/reporting2/reporting/index.html" "reporting"
263
264 - builder:
265     name: mongodb-backup
266     builders:
267         - shell: |
268             bash ./jjb/releng/testapi-backup-mongodb.sh
269
270 ################################
271 # job publishers
272 ################################
273
274 - publisher:
275     name: 'email-publisher'
276     publishers:
277         - email:
278             recipients: rohitsakala@gmail.com feng.xiaowei@zte.com.cn morgan.richomme@orange.com
279             notify-every-unstable-build: false
280             send-to-individuals: true