jjb: move 'node: master' to releng-defaults.yaml
[releng.git] / jjb / genesis / genesis-foreman.yml
1 ########################
2 # Job configuration for genesis/foreman
3 ########################
4 - project:
5
6     name: genesis-foreman
7
8     project: 'genesis'
9
10     installer: 'foreman'
11
12     jobs:
13         - 'genesis-foreman-verify-build-{stream}'
14         - 'genesis-foreman-merge-{stream}'
15         - 'genesis-foreman-daily-{stream}'
16         - 'genesis-foreman-build-{stream}'
17         - 'genesis-foreman-deploy-{stream}'
18         - 'genesis-foreman-lab-reconfig-{stream}'
19         - 'genesis-foreman-deploy-runner-{stream}'
20         - 'genesis-foreman-verify-deploy-virtual-{stream}'
21
22     # stream:    branch with - in place of / (eg. stable-arno)
23     # branch:    branch (eg. stable/arno)
24     stream:
25         - master:
26             branch: 'master'
27             gs-pathname: ''
28             disabled: true
29         - stable-arno:
30             branch: 'stable/arno'
31             gs-pathname: '/arno'
32             disabled: true
33 ########################
34 # job templates
35 ########################
36
37 - job-template:
38     name: 'genesis-foreman-verify-build-{stream}'
39
40     node: ericsson-build
41
42     concurrent: true
43
44     properties:
45         - throttle:
46             enabled: true
47             max-total: 1
48
49     logrotate:
50         daysToKeep: 30
51         numToKeep: 10
52         artifactDaysToKeep: -1
53         artifactNumToKeep: -1
54
55     parameters:
56         - project-parameter:
57             project: '{project}'
58         - gerrit-parameter:
59             branch: '{branch}'
60         - foreman-parameter:
61             installer: '{installer}'
62             gs-pathname: '{gs-pathname}'
63     scm:
64         - gerrit-trigger-scm:
65             credentials-id: '{ssh-credentials}'
66             refspec: '$GERRIT_REFSPEC'
67             choosing-strategy: 'gerrit'
68
69     triggers:
70         - gerrit:
71             trigger-on:
72                 - patchset-created-event:
73                     exclude-drafts: 'false'
74                     exclude-trivial-rebase: 'false'
75                     exclude-no-code-change: 'false'
76                 - draft-published-event
77                 - comment-added-contains-event:
78                     comment-contains-value: 'recheck'
79                 - comment-added-contains-event:
80                     comment-contains-value: 'reverify'
81             projects:
82               - project-compare-type: 'ANT'
83                 project-pattern: 'genesis'
84                 branches:
85                   - branch-compare-type: 'ANT'
86                     branch-pattern: '**/{branch}'
87                 file-paths:
88                   - compare-type: ANT
89                     pattern: 'common/ci/**'
90                   - compare-type: ANT
91                     pattern: 'common/manifests/**'
92                   - compare-type: ANT
93                     pattern: 'common/puppet-opnfv/**'
94                   - compare-type: ANT
95                     pattern: 'common/tools/**'
96                   - compare-type: ANT
97                     pattern: '{installer}/build/**'
98                   - compare-type: ANT
99                     pattern: '{installer}/ci/**'
100                   - compare-type: ANT
101                     pattern: '{installer}/include/**'
102                 forbidden-file-paths:
103                   - compare-type: ANT
104                     pattern: 'common/docs/**'
105                   - compare-type: ANT
106                     pattern: '{installer}/docs/**'
107
108     builders:
109         - 'foreman-build'
110         - 'foreman-workspace-cleanup'
111
112 - job-template:
113     name: 'genesis-foreman-merge-{stream}'
114
115     node: ericsson-build
116
117     concurrent: true
118
119     properties:
120         - throttle:
121             enabled: true
122             max-total: 2
123
124     logrotate:
125         daysToKeep: 30
126         numToKeep: 40
127         artifactDaysToKeep: -1
128         artifactNumToKeep: 5
129
130     parameters:
131         - project-parameter:
132             project: '{project}'
133         - gerrit-parameter:
134             branch: '{branch}'
135         - foreman-parameter:
136             installer: '{installer}'
137             gs-pathname: ''
138     scm:
139         - gerrit-trigger-scm:
140             credentials-id: '{ssh-credentials}'
141             refspec: ''
142             choosing-strategy: 'default'
143
144     triggers:
145         - gerrit:
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: 'genesis'
153                 branches:
154                   - branch-compare-type: 'ANT'
155                     branch-pattern: '**/{branch}'
156                 file-paths:
157                   - compare-type: ANT
158                     pattern: 'common/ci/**'
159                   - compare-type: ANT
160                     pattern: 'common/manifests/**'
161                   - compare-type: ANT
162                     pattern: 'common/puppet-opnfv/**'
163                   - compare-type: ANT
164                     pattern: 'common/tools/**'
165                   - compare-type: ANT
166                     pattern: '{installer}/build/**'
167                   - compare-type: ANT
168                     pattern: '{installer}/ci/**'
169                   - compare-type: ANT
170                     pattern: '{installer}/include/**'
171                 forbidden-file-paths:
172                   - compare-type: ANT
173                     pattern: 'common/docs/**'
174                   - compare-type: ANT
175                     pattern: '{installer}/docs/**'
176
177     builders:
178         - 'foreman-build'
179         - 'foreman-workspace-cleanup'
180
181 - job-template:
182     name: 'genesis-foreman-daily-{stream}'
183
184     node: ericsson-build
185
186     disabled: '{obj:disabled}'
187
188     triggers:
189         - 'foreman-{stream}'
190
191     parameters:
192         - project-parameter:
193             project: '{project}'
194         - foreman-parameter:
195             installer: '{installer}'
196             gs-pathname: '{gs-pathname}'
197
198     scm:
199         - git-scm:
200             credentials-id: '{ssh-credentials}'
201             refspec: ''
202             branch: '{branch}'
203
204     logrotate:
205         daysToKeep: 30
206         numToKeep: 10
207         artifactDaysToKeep: -1
208         artifactNumToKeep: -1
209
210     builders:
211         - trigger-builds:
212           - project: 'genesis-foreman-build-{stream}'
213             git-revision: true
214             block: true
215         - trigger-builds:
216           - project: 'genesis-foreman-lab-reconfig-{stream}'
217             git-revision: true
218             block: true
219         - trigger-builds:
220           - project: 'genesis-foreman-deploy-{stream}'
221             git-revision: true
222             block: true
223         - trigger-builds:
224           - project: 'functest-foreman-{stream}'
225             block: true
226             block-thresholds:
227                 build-step-failure-threshold: 'never'
228                 failure-threshold: 'never'
229                 unstable-threshold: 'FAILURE'
230         # - trigger-builds:
231           # - project: 'yardstick-foreman-{stream}'
232             # block: true
233             # block-thresholds:
234                 # build-step-failure-threshold: 'never'
235                 # failure-threshold: 'never'
236                 # unstable-threshold: 'FAILURE'
237
238     publishers:
239         - trigger-parameterized-builds:
240             - project: 'genesis-fuel-daily-{stream}'
241               trigger-with-no-params: true
242
243 - job-template:
244     name: 'genesis-foreman-deploy-runner-{stream}'
245
246     disabled: false
247
248     logrotate:
249         daysToKeep: 30
250         numToKeep: 10
251         artifactDaysToKeep: -1
252         artifactNumToKeep: -1
253
254     parameters:
255         - project-parameter:
256             project: '{project}'
257         - foreman-parameter:
258             installer: '{installer}'
259             gs-pathname: '{gs-pathname}'
260         - string:
261             name: GIT_BASE
262             default: ssh://gerrit.opnfv.org:29418/$PROJECT
263             description: "Used for overriding the GIT URL coming from parameters macro."
264
265     scm:
266         - git-scm:
267             credentials-id: '{ssh-credentials}'
268             refspec: ''
269             branch: '{branch}'
270
271     properties:
272         - build-blocker:
273             use-build-blocker: true
274             blocking-jobs:
275                 - "genesis-fuel-daily.*"
276                 - "genesis-fuel-deploy-runner-{stream}"
277                 - "genesis-foreman-daily.*"
278
279     builders:
280         - 'foreman-lab-reconfig'
281         - trigger-builds:
282           - project: 'genesis-foreman-deploy-{stream}'
283             git-revision: true
284             block: true
285
286 - job-template:
287     name: 'genesis-foreman-build-{stream}'
288
289     node: ericsson-build
290
291     logrotate:
292         daysToKeep: 30
293         numToKeep: 10
294         artifactDaysToKeep: -1
295         artifactNumToKeep: -1
296
297     parameters:
298         - project-parameter:
299             project: '{project}'
300         - foreman-parameter:
301             installer: '{installer}'
302             gs-pathname: '{gs-pathname}'
303     scm:
304         - git-scm:
305             credentials-id: '{ssh-credentials}'
306             refspec: ''
307             branch: '{branch}'
308
309     builders:
310         - 'foreman-build'
311         - 'foreman-upload-artifact'
312         - 'foreman-workspace-cleanup'
313
314 - job-template:
315     name: 'genesis-foreman-deploy-{stream}'
316
317     disabled: false
318
319     node: opnfv-jump-2
320
321     logrotate:
322         daysToKeep: 30
323         numToKeep: 10
324         artifactDaysToKeep: -1
325         artifactNumToKeep: -1
326
327     parameters:
328         - project-parameter:
329             project: '{project}'
330         - foreman-parameter:
331             installer: '{installer}'
332             gs-pathname: '{gs-pathname}'
333         - string:
334             name: GIT_BASE
335             default: ssh://gerrit.opnfv.org:29418/$PROJECT
336             description: "Used for overriding the GIT URL coming from parameters macro."
337
338     scm:
339         - git-scm:
340             credentials-id: '{ssh-credentials}'
341             refspec: ''
342             branch: '{branch}'
343
344     builders:
345         - 'foreman-deploy'
346
347 - job-template:
348     name: 'genesis-foreman-lab-reconfig-{stream}'
349
350     disabled: false
351
352     logrotate:
353         daysToKeep: 30
354         numToKeep: 10
355         artifactDaysToKeep: -1
356         artifactNumToKeep: -1
357
358     parameters:
359         - project-parameter:
360             project: '{project}'
361         - foreman-parameter:
362             installer: '{installer}'
363             gs-pathname: '{gs-pathname}'
364         - string:
365             name: GIT_BASE
366             default: ssh://gerrit.opnfv.org:29418/$PROJECT
367             description: "Used for overriding the GIT URL coming from parameters macro."
368
369     scm:
370         - git-scm:
371             credentials-id: '{ssh-credentials}'
372             refspec: ''
373             branch: '{branch}'
374
375     properties:
376         - build-blocker:
377             use-build-blocker: true
378             blocking-jobs:
379                 - "genesis-fuel-daily.*"
380
381     builders:
382         - 'foreman-lab-reconfig'
383
384 - job-template:
385     name: 'genesis-foreman-verify-deploy-virtual-{stream}'
386
387     node: opnfv-jump-1
388
389     disabled: true
390
391     logrotate:
392         daysToKeep: 30
393         numToKeep: 10
394         artifactDaysToKeep: -1
395         artifactNumToKeep: -1
396
397     parameters:
398         - project-parameter:
399             project: '{project}'
400         - gerrit-parameter:
401             branch: '{branch}'
402         - foreman-parameter:
403             installer: '{installer}'
404             gs-pathname: '{gs-pathname}'
405         - string:
406             name: GIT_BASE
407             default: ssh://gerrit.opnfv.org:29418/$PROJECT
408             description: "Used for overriding the GIT URL coming from parameters macro."
409     scm:
410         - gerrit-trigger-scm:
411             credentials-id: '{ssh-credentials}'
412             refspec: '$GERRIT_REFSPEC'
413             choosing-strategy: 'gerrit'
414
415     triggers:
416         - gerrit:
417             trigger-on:
418                 - patchset-created-event:
419                     exclude-drafts: 'false'
420                     exclude-trivial-rebase: 'false'
421                     exclude-no-code-change: 'false'
422                 - draft-published-event
423                 - comment-added-contains-event:
424                     comment-contains-value: 'recheck'
425                 - comment-added-contains-event:
426                     comment-contains-value: 'reverify'
427             projects:
428               - project-compare-type: 'ANT'
429                 project-pattern: 'genesis'
430                 branches:
431                   - branch-compare-type: 'ANT'
432                     branch-pattern: '**/{branch}'
433                 file-paths:
434                   - compare-type: ANT
435                     pattern: 'common/ci/**'
436                   - compare-type: ANT
437                     pattern: 'common/manifests/**'
438                   - compare-type: ANT
439                     pattern: 'common/puppet-opnfv/**'
440                   - compare-type: ANT
441                     pattern: 'common/tools/**'
442                   - compare-type: ANT
443                     pattern: '{installer}/build/**'
444                   - compare-type: ANT
445                     pattern: '{installer}/ci/**'
446                   - compare-type: ANT
447                     pattern: '{installer}/include/**'
448                 forbidden-file-paths:
449                   - compare-type: ANT
450                     pattern: 'common/docs/**'
451                   - compare-type: ANT
452                     pattern: '{installer}/docs/**'
453             dependency-jobs: 'genesis-foreman-verify-build-{stream}'
454
455     builders:
456         - 'foreman-deploy-virtual'
457
458 ########################
459 # parameter macros
460 ########################
461 - parameter:
462     name: foreman-parameter
463     parameters:
464         - string:
465             name: INSTALLER
466             default: '{installer}'
467             description: "Installer to use."
468         - string:
469             name: BUILD_DIRECTORY
470             default: $WORKSPACE/build_output
471             description: "Directory where the build artifact will be located upon the completion of the build."
472         - string:
473             name: CACHE_DIRECTORY
474             default: $HOME/opnfv/cache/genesis-$INSTALLER{gs-pathname}
475             description: "Directory where the cache to be used during the build is located."
476         - string:
477             name: GIT_BASE
478             default: https://gerrit.opnfv.org/gerrit/$PROJECT
479             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
480         - string:
481             name: GS_URL
482             default: artifacts.opnfv.org/$PROJECT/$INSTALLER{gs-pathname}
483             description: "URL to Google Storage."
484
485 ########################
486 # builder macros
487 ########################
488 - builder:
489     name: 'foreman-lab-reconfig'
490     builders:
491         - shell: |
492             #!/bin/bash
493             set -o errexit
494             set -o nounset
495             set -o pipefail
496
497             # check to see if ucs login info file exists
498             if [ -e ~/.ssh/ucs_creds ];then
499               source ~/.ssh/ucs_creds
500             else
501               echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
502               exit 1
503             fi
504
505             # clone releng
506             echo "Cloning releng repo..."
507             if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
508               echo "Unable to clone releng repo...Exiting"
509               exit 1
510             fi
511
512             # log info to console
513             echo "Starting the lab reconfiguration for $INSTALLER..."
514             echo "--------------------------------------------------------"
515             echo
516
517             # create venv
518             $WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
519
520             # disable nounset because 'activate' script contains unbound variable(s)
521             set +o nounset
522             # enter venv
523             source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
524             # set nounset back again
525             set -o nounset
526
527             # verify we are in venv
528             if [[ ! $(which python | grep venv) ]]; then
529               echo "Unable to activate venv...Exiting"
530               exit 1
531             fi
532
533             python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/foreman.yaml
534
535             # while undergoing reboot
536             sleep 30
537
538             # check to see if slave is back up
539             ping_counter=0
540             ping_flag=0
541             while [ "$ping_counter" -lt 20 ]; do
542               if [[ $(ping -c 5 172.30.10.72) ]]; then
543                 ping_flag=1
544                 break
545               fi
546               ((ping_counter++))
547               sleep 10
548             done
549
550             if [ "$ping_flag" -eq 1 ]; then
551               echo "Slave is pingable, now wait 180 seconds for services to start"
552               sleep 180
553             else
554               echo "Slave did not come back up after reboot: please check opnfv-jump-2"
555               exit 1
556             fi
557
558             set +o nounset
559             deactivate
560
561             echo
562             echo "--------------------------------------------------------"
563             echo "Done!"
564
565 - builder:
566     name: 'foreman-build'
567     builders:
568         - shell: |
569             #!/bin/bash
570             set -o errexit
571             set -o nounset
572             set -o pipefail
573
574             # log info to console
575             echo "Starting the build of $INSTALLER. This could take some time..."
576             echo "--------------------------------------------------------"
577             echo
578
579             # create the cache directory if it doesn't exist
580             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
581
582             # set OPNFV_ARTIFACT_VERSION
583             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
584
585             # start the build
586             cd $WORKSPACE/$INSTALLER/ci
587             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
588
589             # list the contents of BUILD_OUTPUT directory
590             ls -al $BUILD_DIRECTORY
591
592             # save information regarding artifact into file
593             (
594                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
595                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
596                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
597                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
598                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
599                 echo "OPNFV_BUILD_URL=$BUILD_URL"
600             ) > $WORKSPACE/opnfv.properties
601
602             echo
603             echo "--------------------------------------------------------"
604             echo "Done!"
605
606 - builder:
607     name: 'foreman-deploy'
608     builders:
609         - shell: |
610             #!/bin/bash
611             set -o errexit
612             set -o nounset
613             set -o pipefail
614
615             # log info to console
616             echo "Starting the deployment using $INSTALLER. This could take some time..."
617             echo "--------------------------------------------------------"
618             echo
619
620             # cleanup first
621             sudo $WORKSPACE/common/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
622
623             echo "Sleeping for 60 seconds between clean and deploy to allow nodes to power off"
624             sleep 60
625
626             # and then initiate deployment
627             sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
628
629             echo
630             echo "--------------------------------------------------------"
631             echo "Done!"
632
633 - builder:
634     name: 'foreman-deploy-virtual'
635     builders:
636         - shell: |
637             #!/bin/bash
638             set -o errexit
639             set -o nounset
640             set -o pipefail
641
642             # log info to console
643             echo "Starting the virtual deployment using $INSTALLER. This could take some time..."
644             echo "--------------------------------------------------------"
645             echo
646
647             # cleanup baremetal first (in case baremetal was being used on pod2, remove when moved to isolated Virtual pod)
648             sudo $WORKSPACE/common/ci/clean.sh
649
650             # initiate virtual deployment
651             sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -virtual
652
653             echo
654             echo "--------------------------------------------------------"
655             echo "Done!"
656
657 - builder:
658     name: 'foreman-upload-artifact'
659     builders:
660         - shell: |
661             #!/bin/bash
662             set -o errexit
663             set -o nounset
664             set -o pipefail
665
666             # log info to console
667             echo "Uploading the $INSTALLER artifact. This could take some time..."
668             echo "--------------------------------------------------------"
669             echo
670
671             # source the opnfv.properties to get ARTIFACT_VERSION
672             source $WORKSPACE/opnfv.properties
673
674             # upload artifact and additional files to google storage
675             gsutil cp $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
676             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
677             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
678
679             echo
680             echo "--------------------------------------------------------"
681             echo "Done!"
682             echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
683
684 - builder:
685     name: 'foreman-workspace-cleanup'
686     builders:
687         - shell: |
688             #!/bin/bash
689             set -o errexit
690             set -o nounset
691             set -o pipefail
692
693             # delete everything that is in $WORKSPACE
694             /bin/rm -rf $WORKSPACE
695
696 ########################
697 # trigger macros
698 ########################
699 - trigger:
700     name: 'foreman-master'
701     triggers:
702         - timed: '0 11 * * *'
703
704 - trigger:
705     name: 'foreman-stable-arno'
706     triggers:
707         - timed: '0 12 * * *'