Bugfix: wrong trigger job's name
[releng.git] / jjb / compass4nfv / compass4nfv.yml
1 # this is the job configuration for bgs
2 - project:
3
4     name: compass
5
6     installer: 'compass'
7
8     jobs:
9         - 'compass-verify'
10         - 'compass-verify-on-ericsson-node'
11         - 'compass-merge'
12         - 'compass-daily-{stream}'
13         - 'compass-build-iso'
14         - 'compass-build-ppa'
15         - 'compass-deploy-virtual-{flavor}'
16
17     # stream:    branch with - in place of / (eg. stable-helium)
18     # branch:    branch (eg. stable/helium)
19     stream:
20         - master:
21             branch: 'master'
22
23     flavor:
24         - five:
25             conf: 'virtual_five'
26             node: 'huawei-build'
27         - cluster:
28             conf: 'virtual_cluster'
29             node: 'huawei-build'
30
31
32
33     project: 'compass4nfv'
34
35 ########################
36 # job templates
37 ########################
38 - job-template:
39     name: 'compass-verify-on-ericsson-node'
40
41     project-type: freestyle
42
43     disabled: true
44
45     node: ericsson-build
46
47     logrotate:
48         daysToKeep: 30
49         numToKeep: 10
50         artifactDaysToKeep: -1
51         artifactNumToKeep: -1
52
53     parameters:
54         - project-parameter:
55             project: '{project}'
56         - gerrit-parameter:
57             branch: 'master'
58         - compass-parameter:
59             installer: '{installer}'
60
61     scm:
62         - gerrit-trigger-scm:
63             credentials-id: '{ssh-credentials}'
64             refspec: '$GERRIT_REFSPEC'
65             choosing-strategy: 'gerrit'
66
67     wrappers:
68         - ssh-agent-credentials:
69             user: '{ssh-credentials}'
70
71     triggers:
72         - gerrit:
73             trigger-on:
74                 - patchset-created-event:
75                     exclude-drafts: 'false'
76                     exclude-trivial-rebase: 'false'
77                     exclude-no-code-change: 'false'
78                 - draft-published-event
79                 - comment-added-contains-event:
80                     comment-contains-value: 'recheck'
81                 - comment-added-contains-event:
82                     comment-contains-value: 'reverify'
83             projects:
84               - project-compare-type: 'ANT'
85                 project-pattern: '{project}'
86                 branches:
87                   - branch-compare-type: 'ANT'
88                     branch-pattern: '**/master'
89                 forbidden-file-paths:
90                   - compare-type: ANT
91                     pattern: 'docs/**'
92
93     builders:
94         - 'builder-compass-build-iso'
95         - 'builder-compass-workspace-cleanup'
96
97 - job-template:
98     name: 'compass-verify'
99
100     project-type: freestyle
101
102     disabled: false
103
104     node: huawei-build
105
106     logrotate:
107         daysToKeep: 30
108         numToKeep: 10
109         artifactDaysToKeep: -1
110         artifactNumToKeep: -1
111
112     parameters:
113         - project-parameter:
114             project: '{project}'
115         - gerrit-parameter:
116             branch: 'master'
117         - compass-parameter:
118             installer: '{installer}'
119         - string:
120             name: FLAVOR_CONF
121             default: 'virtual_cluster'
122             description: ""
123     scm:
124         - gerrit-trigger-scm:
125             credentials-id: '{ssh-credentials}'
126             refspec: '$GERRIT_REFSPEC'
127             choosing-strategy: 'gerrit'
128
129     wrappers:
130         - ssh-agent-credentials:
131             user: '{ssh-credentials}'
132
133     triggers:
134         - gerrit:
135             trigger-on:
136                 - patchset-created-event:
137                     exclude-drafts: 'false'
138                     exclude-trivial-rebase: 'false'
139                     exclude-no-code-change: 'false'
140                 - draft-published-event
141                 - comment-added-contains-event:
142                     comment-contains-value: 'recheck'
143                 - comment-added-contains-event:
144                     comment-contains-value: 'reverify'
145             projects:
146               - project-compare-type: 'ANT'
147                 project-pattern: '{project}'
148                 branches:
149                   - branch-compare-type: 'ANT'
150                     branch-pattern: '**/master'
151                 forbidden-file-paths:
152                   - compare-type: ANT
153                     pattern: 'docs/**'
154
155     builders:
156         - 'builder-compass-build-iso'
157 #        - 'builder-compass-deploy-virtual-flavor'
158 #        - 'builder-compass-backup-logs'
159 #    publishers:
160 #        - archive:
161 #            artifacts: 'ansible.log'
162 #            allow-empty: 'true'
163 #            fingerprint: true
164
165 - job-template:
166     name: 'compass-merge'
167
168     # builder-merge job to run JJB update
169     #
170     # This job's purpose is to update all the JJB
171
172     project-type: freestyle
173
174     node: huawei-build
175
176     logrotate:
177         daysToKeep: 30
178         numToKeep: 40
179         artifactDaysToKeep: -1
180         artifactNumToKeep: 5
181
182     parameters:
183         - project-parameter:
184             project: '{project}'
185         - gerrit-parameter:
186             branch: 'master'
187         - compass-parameter:
188             installer: '{installer}'
189
190     scm:
191         - gerrit-trigger-scm:
192             credentials-id: '{ssh-credentials}'
193             refspec: ''
194             choosing-strategy: 'default'
195
196     wrappers:
197         - ssh-agent-credentials:
198             user: '{ssh-credentials}'
199
200     triggers:
201         - gerrit:
202             trigger-on:
203                 - change-merged-event
204                 - comment-added-contains-event:
205                     comment-contains-value: 'remerge'
206             projects:
207               - project-compare-type: 'ANT'
208                 project-pattern: '{project}'
209                 branches:
210                     - branch-compare-type: 'ANT'
211                       branch-pattern: '**/master'
212
213     builders:
214         - 'builder-compass-merge'
215
216 - job-template:
217     name: 'compass-daily-{stream}'
218
219     project-type: freestyle
220
221     node: huawei-build
222
223     parameters:
224         - project-parameter:
225             project: '{project}'
226         - compass-parameter:
227             installer: '{installer}'
228
229     scm:
230         - git-scm:
231             credentials-id: '{ssh-credentials}'
232             refspec: ''
233             branch: '{branch}'
234
235     triggers:
236         - timed: '@midnight'
237
238     logrotate:
239         daysToKeep: 30
240         numToKeep: 10
241         artifactDaysToKeep: -1
242         artifactNumToKeep: -1
243
244     builders:
245         - trigger-builds:
246           - project: 'compass-build-iso'
247             git-revision: true
248             block: true
249         - trigger-builds:
250           - project: 'compass-deploy-virtual-cluster'
251             git-revision: true
252             block: true
253
254 - job-template:
255     name: 'compass-build-iso'
256
257     project-type: freestyle
258
259     node: ericsson-build
260
261     logrotate:
262         daysToKeep: 30
263         numToKeep: 10
264         artifactDaysToKeep: -1
265         artifactNumToKeep: -1
266
267     parameters:
268         - project-parameter:
269             project: '{project}'
270         - compass-parameter:
271             installer: '{installer}'
272
273     scm:
274         - git-scm:
275             credentials-id: '{ssh-credentials}'
276             refspec: ''
277             branch: 'master'
278
279     builders:
280         - 'builder-compass-build-iso'
281         - 'builder-compass-upload-artifact'
282         - 'builder-compass-workspace-cleanup'
283
284 - job-template:
285     name: 'compass-build-ppa'
286
287     description: "build ppa(using docker) in huawei lab"
288
289     project-type: freestyle
290
291     node: huawei-build
292
293     logrotate:
294         daysToKeep: 30
295         numToKeep: 10
296         artifactDaysToKeep: -1
297         artifactNumToKeep: -1
298
299     parameters:
300         - project-parameter:
301             project: '{project}'
302         - compass-parameter:
303             installer: '{installer}'
304
305     scm:
306         - git-scm:
307             credentials-id: '{ssh-credentials}'
308             refspec: ''
309             branch: 'master'
310
311     triggers:
312         - timed: 'H 4-18/2 * * *'
313
314     builders:
315         - 'builder-compass-make-ppa'
316
317 - job-template:
318     name: 'compass-deploy-virtual-{flavor}'
319
320     project-type: freestyle
321
322     disabled: false
323
324     node: '{node}'
325
326     parameters:
327         - project-parameter:
328             project: '{project}'
329         - compass-parameter:
330             installer: '{installer}'
331         - string:
332             name: FLAVOR_CONF
333             default: '{conf}'
334             description: ""
335
336
337     logrotate:
338         daysToKeep: 30
339         numToKeep: 10
340         artifactDaysToKeep: -1
341         artifactNumToKeep: -1
342
343
344     builders:
345         - 'builder-compass-ci-preclean-workspace'
346         - 'builder-compass-download-artifact'
347         - 'builder-compass-deploy-virtual-flavor'
348         - 'builder-compass-backup-logs'
349     publishers:
350         - archive:
351             artifacts: 'ansible.log'
352             allow-empty: 'true'
353             fingerprint: true
354
355 ########################
356 # parameter macros
357 ########################
358 - parameter:
359     name: compass-parameter
360     parameters:
361         - string:
362             name: INSTALLER
363             default: '{installer}'
364             description: "Installer to use."
365         - string:
366             name: BUILD_DIRECTORY
367             default: $WORKSPACE/build_output
368             description: "Directory where the build artifact will be located upon the completion of the build."
369         - string:
370             name: CACHE_DIRECTORY
371             default: $HOME/opnfv/cache/$PROJECT
372             description: "Directory where the cache to be used during the build is located."
373         - string:
374             name: GIT_BASE
375             default: https://gerrit.opnfv.org/gerrit/$PROJECT
376             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
377         - string:
378             name: GS_URL
379             default: artifacts.opnfv.org/$PROJECT/
380             description: "URL to Google Storage."
381         - string:
382             name: GS_URL_PROXY
383             default: build.opnfv.org/artifacts/$PROJECT/
384             description: "URL to Google Storage proxy"
385         - string:
386             name: installer_ip
387             default: "10.1.0.12"
388         - string:
389             name: PPA_REPO
390             default: "http://58.251.166.184:9999"
391         - string:
392             name: PPA_CACHE
393             default: "$WORKSPACE/work/repo/"
394
395 ########################
396 # builder macros
397 ########################
398 - builder:
399     name: 'builder-compass-merge'
400     builders:
401         - shell: |
402             #!/bin/bash
403             echo "Hello World!"
404
405 - builder:
406     name: 'builder-compass-make-ppa'
407     builders:
408         - shell: |
409             #!/bin/bash
410             set -x
411             set -o errexit
412             set -o nounset
413             set -o pipefail
414             # make ppa
415             cd $WORKSPACE/
416             ./build/make_repo.sh
417             # calc MD5 of ppa
418             cd $PPA_CACHE
419             for i in $(find *.gz *.iso *.img -type f)
420             do
421                 md5=$(md5sum $i | cut -d ' ' -f1)
422                 echo $md5 > $i.md5
423             done
424             # upload PPA
425             for i in $(find *.gz *.iso *.img *.md5 -type f)
426             do
427                 curl -T $i $PPA_REPO
428             done
429
430 - builder:
431     name: 'builder-compass-build-iso'
432     builders:
433         - shell: |
434             #!/bin/bash
435             set -o errexit
436             set -o nounset
437             set -o pipefail
438
439             # log info to console
440             echo "Starting the build of $INSTALLER. This could take some time..."
441             echo "--------------------------------------------------------"
442             echo
443
444             # create the cache directory if it doesn't exist
445             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
446             [[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
447
448             # set OPNFV_ARTIFACT_VERSION
449             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
450
451             # start the build
452             if [ -d $PPA_CACHE ]
453             then
454                 cp $PPA_CACHE/*.tar.gz $PPA_CACHE/*.iso $PPA_CACHE/*.img $CACHE_DIRECTORY/ -f
455             fi
456
457             cd $WORKSPACE/
458             ./build.sh  --iso-dir $BUILD_DIRECTORY/ --iso-name compass.iso -c $CACHE_DIRECTORY
459
460             # list the build artifacts
461             ls -al $BUILD_DIRECTORY
462
463             # save information regarding artifact into file
464             (
465                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
466                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
467                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
468                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
469                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)"
470                 echo "OPNFV_BUILD_URL=$BUILD_URL"
471             ) > $BUILD_DIRECTORY/opnfv.properties
472             echo
473             echo "--------------------------------------------------------"
474             echo "Done!"
475
476 - builder:
477     name: 'builder-compass-deploy-virtual-flavor'
478     builders:
479         - shell: |
480             #!/bin/bash
481             set -o errexit
482             set -o nounset
483             set -o pipefail
484             set -x
485
486             # log info to console
487             echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..."
488             echo "--------------------------------------------------------"
489             echo
490
491             export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
492             cd $WORKSPACE
493             ./deploy.sh $FLAVOR_CONF
494
495             echo
496             echo "--------------------------------------------------------"
497             echo "Done!"
498
499 - builder:
500     name: 'builder-compass-upload-artifact'
501     builders:
502         - shell: |
503             #!/bin/bash
504             set -o errexit
505             set -o nounset
506             set -o pipefail
507
508             # log info to console
509             echo "Uploading the $INSTALLER artifact. This could take some time..."
510             echo "--------------------------------------------------------"
511             echo
512
513             # source the opnfv.properties to get ARTIFACT_VERSION
514             source $BUILD_DIRECTORY/opnfv.properties
515
516             # upload artifact and additional files to google storage
517             gsutil cp $BUILD_DIRECTORY/compass.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
518             gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
519             gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
520
521
522             echo
523             echo "--------------------------------------------------------"
524             echo "Done!"
525             echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
526
527 - builder:
528     name: 'builder-compass-download-artifact'
529     builders:
530         - shell: |
531             #!/bin/bash
532             set -o errexit
533             set -o nounset
534             set -o pipefail
535
536             # log info to console
537             echo "Downloading the $INSTALLER artifact. This could take some time..."
538             echo "--------------------------------------------------------"
539             echo
540
541             # get the latest.properties file in order to get info regarding latest artifact
542             [[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
543             curl -s -o $BUILD_DIRECTORY/latest.properties http://$GS_URL/latest.properties
544
545             # check if we got the file
546             [[ -f $BUILD_DIRECTORY/latest.properties ]] || exit 1
547
548             # source the file so we get OPNFV vars
549             source $BUILD_DIRECTORY/latest.properties
550
551             # download the file
552             curl -s -o $BUILD_DIRECTORY/compass.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
553
554             # list the file
555             ls -al $BUILD_DIRECTORY/compass.iso
556
557             echo
558             echo "--------------------------------------------------------"
559             echo "Done!"
560
561 - builder:
562     name: 'builder-compass-workspace-cleanup'
563     builders:
564         - shell: |
565             #!/bin/bash
566             set -o errexit
567             set -o nounset
568             set -o pipefail
569
570             # delete everything that is in $WORKSPACE
571             /bin/rm -rf $WORKSPACE
572
573 - builder:
574     name: 'builder-compass-ci-preclean-workspace'
575     builders:
576         - shell: |
577             #!/bin/bash
578             set -o errexit
579             set -o nounset
580             set -o pipefail
581
582             cd $WORKSPACE/..
583             sudo rm $WORKSPACE -rf
584             git clone $GIT_BASE  $WORKSPACE
585
586 - builder:
587     name: 'builder-compass-backup-logs'
588     builders:
589         - shell: |
590             ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
591             sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:/var/ansible/run/openstack_juno-opnfv2/ansible.log ./  &> /dev/null