296862de1e4839d59d57d0dc12050eff11f4242d
[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: 'H */6 * * *'
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'
191             git-revision: true
192             block: true
193         - trigger-builds:
194           - project: 'functest-opnfv-jump-1'
195             block: true
196
197 - job-template:
198     name: 'genesis-fuel-build'
199
200     project-type: freestyle
201
202     node: ericsson-build
203
204     logrotate:
205         daysToKeep: 30
206         numToKeep: 10
207         artifactDaysToKeep: -1
208         artifactNumToKeep: -1
209
210     parameters:
211         - project-parameter:
212             project: '{project}'
213         - fuel-parameter:
214             installer: '{installer}'
215
216     scm:
217         - git-scm:
218             credentials-id: '{ssh-credentials}'
219             refspec: ''
220             branch: master
221
222     builders:
223         - 'fuel-build'
224         - 'fuel-upload-artifact'
225         - 'fuel-workspace-cleanup'
226
227 - job-template:
228     name: 'genesis-fuel-deploy'
229
230     project-type: freestyle
231
232     disabled: false
233
234     node: opnfv-jump-1
235
236     parameters:
237         - project-parameter:
238             project: '{project}'
239         - fuel-parameter:
240             installer: '{installer}'
241         - string:
242             name: GIT_BASE
243             default: ssh://gerrit.opnfv.org:29418/$PROJECT
244             description: "POD1 has some issues with cloning using https so that's why GIT_BASE is overriden here again."
245
246     scm:
247         - git-scm:
248             credentials-id: '{ssh-credentials}'
249             refspec: ''
250             branch: master
251
252     logrotate:
253         daysToKeep: 30
254         numToKeep: 10
255         artifactDaysToKeep: -1
256         artifactNumToKeep: -1
257
258     builders:
259         - 'fuel-download-artifact'
260         - 'fuel-deploy'
261
262 - job-template:
263     name: 'genesis-fuel-deploy-virtual'
264
265     project-type: freestyle
266
267     disabled: true
268
269     node: ericsson-build
270
271     parameters:
272         - project-parameter:
273             project: '{project}'
274         - fuel-parameter:
275             installer: '{installer}'
276
277     scm:
278         - git-scm:
279             credentials-id: '{ssh-credentials}'
280             refspec: ''
281             branch: master
282
283     logrotate:
284         daysToKeep: 30
285         numToKeep: 10
286         artifactDaysToKeep: -1
287         artifactNumToKeep: -1
288
289     builders:
290         - 'fuel-deploy-virtual'
291
292 ########################
293 # parameter macros
294 ########################
295 - parameter:
296     name: fuel-parameter
297     parameters:
298         - string:
299             name: INSTALLER
300             default: '{installer}'
301             description: "Installer to use."
302         - string:
303             name: BUILD_DIRECTORY
304             default: $WORKSPACE/build_output
305             description: "Directory where the build artifact will be located upon the completion of the build."
306         - string:
307             name: CACHE_DIRECTORY
308             default: $HOME/opnfv/cache/genesis-$INSTALLER
309             description: "Directory where the cache to be used during the build is located."
310         - string:
311             name: GIT_BASE
312             default: https://gerrit.opnfv.org/gerrit/$PROJECT
313             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
314         - string:
315             name: GS_URL
316             default: artifacts.opnfv.org/$PROJECT/$INSTALLER
317             description: "URL to Google Storage."
318
319 ########################
320 # builder macros
321 ########################
322 - builder:
323     name: 'fuel-build'
324     builders:
325         - shell: |
326             #!/bin/bash
327             set -o errexit
328             set -o nounset
329             set -o pipefail
330
331             # log info to console
332             echo "Starting the build of $INSTALLER. This could take some time..."
333             echo "--------------------------------------------------------"
334             echo
335
336             # create the cache directory if it doesn't exist
337             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
338
339             # set OPNFV_ARTIFACT_VERSION
340             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
341
342             # start the build
343             cd $WORKSPACE/$INSTALLER/ci
344             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
345
346             # list the build artifacts
347             ls -al $BUILD_DIRECTORY
348
349             # save information regarding artifact into file
350             (
351                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
352                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
353                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
354                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
355                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
356                 echo "OPNFV_BUILD_URL=$BUILD_URL"
357             ) > $WORKSPACE/opnfv.properties
358
359             echo
360             echo "--------------------------------------------------------"
361             echo "Done!"
362
363 - builder:
364     name: 'fuel-deploy'
365     builders:
366         - shell: |
367             #!/bin/bash
368             set -o errexit
369             set -o nounset
370             set -o pipefail
371
372             # source the file so we get OPNFV vars
373             source latest.properties
374
375             # echo the info about artifact that is used during the deployment
376             echo "Using $(echo $OPNFV_ARTIFACT_URL | cut -d'/' -f4) for deployment"
377
378             # create TMPDIR if it doesn't exist
379             export TMPDIR=$HOME/tmpdir
380             [[ -d $TMPDIR ]] || mkdir -p $TMPDIR
381
382             # change permissions down to TMPDIR
383             chmod a+x $HOME
384             chmod a+x $TMPDIR
385
386             # set TOPDIR
387             export TOPDIR=$WORKSPACE/fuel/prototypes/auto-deploy
388
389             # log info to console
390             echo "Starting the deployment using $INSTALLER. This could take some time..."
391             echo "--------------------------------------------------------"
392             echo
393
394             # start the deployment
395             echo "Issuing command"
396             echo "sudo TMPDIR=${TMPDIR} ${TOPDIR}/deploy/deploy.sh ${WORKSPACE}/opnfv.iso ${TOPDIR}/configs/lf_pod1/dea_no-ha.yaml ${TOPDIR}/configs/lf_pod1/dha.yaml"
397             sudo TMPDIR=${TMPDIR} ${TOPDIR}/deploy/deploy.sh ${WORKSPACE}/opnfv.iso ${TOPDIR}/configs/lf_pod1/dea_no-ha.yaml ${TOPDIR}/configs/lf_pod1/dha.yaml
398
399             echo
400             echo "--------------------------------------------------------"
401             echo "Done!"
402
403 - builder:
404     name: 'fuel-deploy-virtual'
405     builders:
406         - shell: |
407             #!/bin/bash
408             set -o errexit
409             set -o nounset
410             set -o pipefail
411
412             # log info to console
413             echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..."
414             echo "--------------------------------------------------------"
415             echo
416
417             ssh -o BatchMode=yes -o TCPKeepAlive=yes cideploy@10.118.34.205 ./cideploy.sh
418
419             echo
420             echo "--------------------------------------------------------"
421             echo "Done!"
422
423 - builder:
424     name: 'fuel-upload-artifact'
425     builders:
426         - shell: |
427             #!/bin/bash
428             set -o errexit
429             set -o nounset
430             set -o pipefail
431
432             # log info to console
433             echo "Uploading the $INSTALLER artifact. This could take some time..."
434             echo "--------------------------------------------------------"
435             echo
436
437             # source the opnfv.properties to get ARTIFACT_VERSION
438             source $WORKSPACE/opnfv.properties
439
440             # upload artifact and additional files to google storage
441             gsutil cp $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
442             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
443             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
444
445             echo
446             echo "--------------------------------------------------------"
447             echo "Done!"
448
449 - builder:
450     name: 'fuel-download-artifact'
451     builders:
452         - shell: |
453             #!/bin/bash
454             set -o errexit
455             set -o nounset
456             set -o pipefail
457
458             # log info to console
459             echo "Downloading the $INSTALLER artifact. This could take some time..."
460             echo "--------------------------------------------------------"
461             echo
462
463             # get the latest.properties file in order to get info regarding latest artifact
464             curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
465
466             # check if we got the file
467             [[ -f latest.properties ]] || exit 1
468
469             # source the file so we get OPNFV vars
470             source latest.properties
471
472             # download the file
473             curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
474
475             # list the file
476             ls -al $WORKSPACE/opnfv.iso
477
478             echo
479             echo "--------------------------------------------------------"
480             echo "Done!"
481
482 - builder:
483     name: 'fuel-workspace-cleanup'
484     builders:
485         - shell: |
486             #!/bin/bash
487             set -o errexit
488             set -o nounset
489             set -o pipefail
490
491             # delete everything that is in $WORKSPACE
492             /bin/rm -rf $WORKSPACE