3d288a7ac4f7cd987b5cfe1586f54a01a96b99f3
[releng.git] / jjb / genesis / genesis-fuel.yml
1 ########################
2 # Job configuration for genesis/fuel
3 ########################
4 - project:
5
6     name: genesis-fuel
7
8     project: 'genesis'
9
10     installer: 'fuel'
11
12     jobs:
13         - 'genesis-fuel-verify'
14         - 'genesis-fuel-merge'
15         - 'genesis-fuel-daily-{stream}'
16         - 'genesis-fuel-build'
17         - 'genesis-fuel-deploy'
18         - 'genesis-fuel-deploy-virtual'
19
20     stream:
21         - master:
22             branch: 'master'
23
24 ########################
25 # job templates
26 ########################
27
28 - job-template:
29     name: 'genesis-fuel-verify'
30
31     project-type: freestyle
32
33     node: ericsson-build
34
35     concurrent: true
36
37     properties:
38         - throttle:
39             enabled: true
40             max-total: 3
41
42     logrotate:
43         daysToKeep: 30
44         numToKeep: 10
45         artifactDaysToKeep: -1
46         artifactNumToKeep: -1
47
48     parameters:
49         - project-parameter:
50             project: '{project}'
51         - gerrit-parameter:
52             branch: 'master'
53         - fuel-parameter:
54             installer: '{installer}'
55
56     scm:
57         - gerrit-trigger-scm:
58             credentials-id: '{ssh-credentials}'
59             refspec: '$GERRIT_REFSPEC'
60             choosing-strategy: 'gerrit'
61
62     wrappers:
63         - ssh-agent-credentials:
64             user: '{ssh-credentials}'
65
66     triggers:
67         - gerrit:
68             trigger-on:
69                 - patchset-created-event:
70                     exclude-drafts: 'false'
71                     exclude-trivial-rebase: 'false'
72                     exclude-no-code-change: 'false'
73                 - draft-published-event
74                 - comment-added-contains-event:
75                     comment-contains-value: 'recheck'
76                 - comment-added-contains-event:
77                     comment-contains-value: 'reverify'
78             projects:
79               - project-compare-type: 'ANT'
80                 project-pattern: 'genesis'
81                 branches:
82                   - branch-compare-type: 'ANT'
83                     branch-pattern: '**/master'
84                 file-paths:
85                   - compare-type: ANT
86                     pattern: 'common/**'
87                   - compare-type: ANT
88                     pattern: '{installer}/**'
89
90     builders:
91         - 'fuel-build'
92         - 'fuel-workspace-cleanup'
93
94 - job-template:
95     name: 'genesis-fuel-merge'
96
97     project-type: freestyle
98
99     node: ericsson-build
100
101     concurrent: true
102
103     properties:
104         - throttle:
105             enabled: true
106             max-total: 2
107
108     logrotate:
109         daysToKeep: 30
110         numToKeep: 40
111         artifactDaysToKeep: -1
112         artifactNumToKeep: 5
113
114     parameters:
115         - project-parameter:
116             project: '{project}'
117         - gerrit-parameter:
118             branch: 'master'
119         - fuel-parameter:
120             installer: '{installer}'
121
122     scm:
123         - gerrit-trigger-scm:
124             credentials-id: '{ssh-credentials}'
125             refspec: ''
126             choosing-strategy: 'default'
127
128     wrappers:
129         - ssh-agent-credentials:
130             user: '{ssh-credentials}'
131
132     triggers:
133         - gerrit:
134             trigger-on:
135                 - change-merged-event
136                 - comment-added-contains-event:
137                     comment-contains-value: 'remerge'
138             projects:
139               - project-compare-type: 'ANT'
140                 project-pattern: 'genesis'
141                 branches:
142                     - branch-compare-type: 'ANT'
143                       branch-pattern: '**/master'
144                 file-paths:
145                   - compare-type: ANT
146                     pattern: 'common/**'
147                   - compare-type: ANT
148                     pattern: '{installer}/**'
149
150     builders:
151         - 'fuel-build'
152         - 'fuel-workspace-cleanup'
153
154 - job-template:
155     name: 'genesis-fuel-daily-{stream}'
156
157     project-type: freestyle
158
159     node: ericsson-build
160
161     disabled: false
162
163     parameters:
164         - project-parameter:
165             project: '{project}'
166         - fuel-parameter:
167             installer: '{installer}'
168
169     scm:
170         - git-scm:
171             credentials-id: '{ssh-credentials}'
172             refspec: ''
173             branch: master
174
175     triggers:
176         - timed: '@midnight'
177
178     logrotate:
179         daysToKeep: 30
180         numToKeep: 10
181         artifactDaysToKeep: -1
182         artifactNumToKeep: -1
183
184     builders:
185         - trigger-builds:
186           - project: 'genesis-fuel-build'
187             git-revision: true
188             block: true
189         - trigger-builds:
190           - project: 'genesis-fuel-deploy-virtual'
191             git-revision: true
192             block: false
193
194 - job-template:
195     name: 'genesis-fuel-build'
196
197     project-type: freestyle
198
199     node: ericsson-build
200
201     logrotate:
202         daysToKeep: 30
203         numToKeep: 10
204         artifactDaysToKeep: -1
205         artifactNumToKeep: -1
206
207     parameters:
208         - project-parameter:
209             project: '{project}'
210         - fuel-parameter:
211             installer: '{installer}'
212
213     scm:
214         - git-scm:
215             credentials-id: '{ssh-credentials}'
216             refspec: ''
217             branch: master
218
219     builders:
220         - 'fuel-build'
221         - 'fuel-upload-artifact'
222         - 'fuel-workspace-cleanup'
223
224 - job-template:
225     name: 'genesis-fuel-deploy'
226
227     project-type: freestyle
228
229     disabled: true
230
231     node: opnfv-jump-1
232
233     parameters:
234         - project-parameter:
235             project: '{project}'
236         - fuel-parameter:
237             installer: '{installer}'
238
239     scm:
240         - git-scm:
241             credentials-id: '{ssh-credentials}'
242             refspec: ''
243             branch: master
244
245     logrotate:
246         daysToKeep: 30
247         numToKeep: 10
248         artifactDaysToKeep: -1
249         artifactNumToKeep: -1
250
251     builders:
252         - 'fuel-download-artifact'
253         - 'fuel-deploy'
254
255 - job-template:
256     name: 'genesis-fuel-deploy-virtual'
257
258     project-type: freestyle
259
260     disabled: false
261
262     node: ericsson-build
263
264     parameters:
265         - project-parameter:
266             project: '{project}'
267         - fuel-parameter:
268             installer: '{installer}'
269
270     scm:
271         - git-scm:
272             credentials-id: '{ssh-credentials}'
273             refspec: ''
274             branch: master
275
276     logrotate:
277         daysToKeep: 30
278         numToKeep: 10
279         artifactDaysToKeep: -1
280         artifactNumToKeep: -1
281
282     builders:
283         - 'fuel-download-artifact'
284         - 'fuel-deploy-virtual'
285
286 ########################
287 # parameter macros
288 ########################
289 - parameter:
290     name: fuel-parameter
291     parameters:
292         - string:
293             name: INSTALLER
294             default: '{installer}'
295             description: "Installer to use."
296         - string:
297             name: BUILD_DIRECTORY
298             default: $WORKSPACE/build_output
299             description: "Directory where the build artifact will be located upon the completion of the build."
300         - string:
301             name: CACHE_DIRECTORY
302             default: $HOME/opnfv/cache/genesis-$INSTALLER
303             description: "Directory where the cache to be used during the build is located."
304         - string:
305             name: GIT_BASE
306             default: https://gerrit.opnfv.org/gerrit/$PROJECT
307             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
308         - string:
309             name: GS_URL
310             default: artifacts.opnfv.org/$PROJECT/$INSTALLER
311             description: "URL to Google Storage."
312
313 ########################
314 # builder macros
315 ########################
316 - builder:
317     name: 'fuel-build'
318     builders:
319         - shell: |
320             #!/bin/bash
321             set -o errexit
322             set -o nounset
323             set -o pipefail
324
325             # log info to console
326             echo "Starting the build of $INSTALLER. This could take some time..."
327             echo "--------------------------------------------------------"
328             echo
329
330             # create the cache directory if it doesn't exist
331             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
332
333             # set OPNFV_ARTIFACT_VERSION
334             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
335
336             # start the build
337             cd $WORKSPACE/$INSTALLER/ci
338             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
339
340             # list the build artifacts
341             ls -al $BUILD_DIRECTORY
342
343             # list the contents of BUILD_OUTPUT directory
344             ls -al $BUILD_DIRECTORY
345
346             # save information regarding artifact into file
347             (
348                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
349                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
350                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
351                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
352                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
353                 echo "OPNFV_BUILD_URL=$BUILD_URL"
354             ) > $WORKSPACE/opnfv.properties
355
356             echo
357             echo "--------------------------------------------------------"
358             echo "Done!"
359
360 - builder:
361     name: 'fuel-deploy'
362     builders:
363         - shell: |
364             #!/bin/bash
365             set -o errexit
366             set -o nounset
367             set -o pipefail
368
369             # source the file so we get OPNFV vars
370             source latest.properties
371
372             # echo the info about artifact that is used during the deployment
373             echo "Using $(echo $OPNFV_ARTIFACT_URL | cut -d'/' -f4) for deployment"
374
375             # set TOPDIR
376             export TOPDIR=$WORKSPACE/fuel/prototypes/auto-deploy
377
378             # log info to console
379             echo "Startint the deployment using $INSTALLER. This could take some time..."
380             echo "--------------------------------------------------------"
381             echo
382
383             # start the deployment
384             echo "sudo  ${TOPDIR}/deploy/deploy.sh $WORKSPACE/opnfv.iso ${TOPDIR}/configs/lf_pod1/dea.yaml ${TOPDIR}/configs/lf_pod1/dha.yaml"
385
386             echo
387             echo "--------------------------------------------------------"
388             echo "Done!"
389
390 - builder:
391     name: 'fuel-deploy-virtual'
392     builders:
393         - shell: |
394             #!/bin/bash
395             set -o errexit
396             set -o nounset
397             set -o pipefail
398
399             # log info to console
400             echo "Startint the deployment on virtual environment using $INSTALLER. This could take some time..."
401             echo "--------------------------------------------------------"
402             echo
403
404             ssh -o BatchMode=yes -o TCPKeepAlive=yes cideploy@10.118.34.205 ./cideploy.sh
405
406             echo
407             echo "--------------------------------------------------------"
408             echo "Done!"
409
410 - builder:
411     name: 'fuel-upload-artifact'
412     builders:
413         - shell: |
414             #!/bin/bash
415             set -o errexit
416             set -o nounset
417             set -o pipefail
418
419             # log info to console
420             echo "Uploading the $INSTALLER artifact. This could take some time..."
421             echo "--------------------------------------------------------"
422             echo
423
424             # source the opnfv.properties to get ARTIFACT_VERSION
425             source $WORKSPACE/opnfv.properties
426
427             # upload artifact and additional files to google storage
428             gsutil cp $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
429             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
430             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
431
432             echo
433             echo "--------------------------------------------------------"
434             echo "Done!"
435
436 - builder:
437     name: 'fuel-download-artifact'
438     builders:
439         - shell: |
440             #!/bin/bash
441             set -o errexit
442             set -o nounset
443             set -o pipefail
444
445             # log info to console
446             echo "Downloading the $INSTALLER artifact. This could take some time..."
447             echo "--------------------------------------------------------"
448             echo
449
450             # get the latest.properties file in order to get info regarding latest artifact
451             gsutil cp gs://$GS_URL/latest.properties $WORKSPACE/latest.properties
452
453             # check if we got the file
454             [[ -f latest.properties ]] || exit 1
455
456             # source the file so we get OPNFV vars
457             source latest.properties
458
459             # download the file
460             gsutil cp gs://$OPNFV_ARTIFACT_URL $WORKSPACE/opnfv.iso
461
462             # list the file
463             ls -al $WORKSPACE/opnfv.iso
464
465             echo
466             echo "--------------------------------------------------------"
467             echo "Done!"
468
469 - builder:
470     name: 'fuel-workspace-cleanup'
471     builders:
472         - shell: |
473             #!/bin/bash
474             set -o errexit
475             set -o nounset
476             set -o pipefail
477
478             # delete everything that is in $WORKSPACE
479             /bin/rm -rf $WORKSPACE