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