Merge "Enables apex daily now that build is working"
[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     logrotate:
418         daysToKeep: 30
419         numToKeep: 10
420         artifactDaysToKeep: -1
421         artifactNumToKeep: -1
422
423     parameters:
424         - project-parameter:
425             project: '{project}'
426         - gerrit-parameter:
427             branch: '{branch}'
428         - foreman-parameter:
429             installer: '{installer}'
430             gs-pathname: '{gs-pathname}'
431         - string:
432             name: GIT_BASE
433             default: ssh://gerrit.opnfv.org:29418/$PROJECT
434             description: "Used for overriding the GIT URL coming from parameters macro."
435     scm:
436         - gerrit-trigger-scm:
437             credentials-id: '{ssh-credentials}'
438             refspec: '$GERRIT_REFSPEC'
439             choosing-strategy: 'gerrit'
440
441     wrappers:
442         - ssh-agent-credentials:
443             user: '{ssh-credentials}'
444
445     triggers:
446         - gerrit:
447             trigger-on:
448                 - patchset-created-event:
449                     exclude-drafts: 'false'
450                     exclude-trivial-rebase: 'false'
451                     exclude-no-code-change: 'false'
452                 - draft-published-event
453                 - comment-added-contains-event:
454                     comment-contains-value: 'recheck'
455                 - comment-added-contains-event:
456                     comment-contains-value: 'reverify'
457             projects:
458               - project-compare-type: 'ANT'
459                 project-pattern: 'genesis'
460                 branches:
461                   - branch-compare-type: 'ANT'
462                     branch-pattern: '**/{branch}'
463                 file-paths:
464                   - compare-type: ANT
465                     pattern: 'common/ci/**'
466                   - compare-type: ANT
467                     pattern: 'common/manifests/**'
468                   - compare-type: ANT
469                     pattern: 'common/puppet-opnfv/**'
470                   - compare-type: ANT
471                     pattern: 'common/tools/**'
472                   - compare-type: ANT
473                     pattern: '{installer}/build/**'
474                   - compare-type: ANT
475                     pattern: '{installer}/ci/**'
476                   - compare-type: ANT
477                     pattern: '{installer}/include/**'
478                 forbidden-file-paths:
479                   - compare-type: ANT
480                     pattern: 'common/docs/**'
481                   - compare-type: ANT
482                     pattern: '{installer}/docs/**'
483             dependency-jobs: 'genesis-foreman-verify-build-{stream}'
484
485
486     builders:
487         - 'foreman-deploy-virtual'
488
489 ########################
490 # parameter macros
491 ########################
492 - parameter:
493     name: foreman-parameter
494     parameters:
495         - string:
496             name: INSTALLER
497             default: '{installer}'
498             description: "Installer to use."
499         - string:
500             name: BUILD_DIRECTORY
501             default: $WORKSPACE/build_output
502             description: "Directory where the build artifact will be located upon the completion of the build."
503         - string:
504             name: CACHE_DIRECTORY
505             default: $HOME/opnfv/cache/genesis-$INSTALLER{gs-pathname}
506             description: "Directory where the cache to be used during the build is located."
507         - string:
508             name: GIT_BASE
509             default: https://gerrit.opnfv.org/gerrit/$PROJECT
510             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
511         - string:
512             name: GS_URL
513             default: artifacts.opnfv.org/$PROJECT/$INSTALLER{gs-pathname}
514             description: "URL to Google Storage."
515
516 ########################
517 # builder macros
518 ########################
519 - builder:
520     name: 'foreman-lab-reconfig'
521     builders:
522         - shell: |
523             #!/bin/bash
524             set -o errexit
525             set -o nounset
526             set -o pipefail
527
528             # check to see if ucs login info file exists
529             if [ -e ~/.ssh/ucs_creds ];then
530               source ~/.ssh/ucs_creds
531             else
532               echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
533               exit 1
534             fi
535
536             # clone releng
537             echo "Cloning releng repo..."
538             if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
539               echo "Unable to clone releng repo...Exiting"
540               exit 1
541             fi
542
543             # log info to console
544             echo "Starting the lab reconfiguration for $INSTALLER..."
545             echo "--------------------------------------------------------"
546             echo
547
548             # create venv
549             $WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
550
551             # disable nounset because 'activate' script contains unbound variable(s)
552             set +o nounset
553             # enter venv
554             source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
555             # set nounset back again
556             set -o nounset
557
558             # verify we are in venv
559             if [[ ! $(which python | grep venv) ]]; then
560               echo "Unable to activate venv...Exiting"
561               exit 1
562             fi
563
564             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
565
566             # while undergoing reboot
567             sleep 30
568
569             # check to see if slave is back up
570             ping_counter=0
571             ping_flag=0
572             while [ "$ping_counter" -lt 20 ]; do
573               if [[ $(ping -c 5 172.30.10.72) ]]; then
574                 ping_flag=1
575                 break
576               fi
577               ((ping_counter++))
578               sleep 10
579             done
580
581             if [ "$ping_flag" -eq 1 ]; then
582               echo "Slave is pingable, now wait 180 seconds for services to start"
583               sleep 180
584             else
585               echo "Slave did not come back up after reboot: please check opnfv-jump-2"
586               exit 1
587             fi
588
589             set +o nounset
590             deactivate
591
592             echo
593             echo "--------------------------------------------------------"
594             echo "Done!"
595
596 - builder:
597     name: 'foreman-build'
598     builders:
599         - shell: |
600             #!/bin/bash
601             set -o errexit
602             set -o nounset
603             set -o pipefail
604
605             # log info to console
606             echo "Starting the build of $INSTALLER. This could take some time..."
607             echo "--------------------------------------------------------"
608             echo
609
610             # create the cache directory if it doesn't exist
611             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
612
613             # set OPNFV_ARTIFACT_VERSION
614             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
615
616             # start the build
617             cd $WORKSPACE/$INSTALLER/ci
618             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
619
620             # list the contents of BUILD_OUTPUT directory
621             ls -al $BUILD_DIRECTORY
622
623             # save information regarding artifact into file
624             (
625                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
626                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
627                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
628                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
629                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
630                 echo "OPNFV_BUILD_URL=$BUILD_URL"
631             ) > $WORKSPACE/opnfv.properties
632
633             echo
634             echo "--------------------------------------------------------"
635             echo "Done!"
636
637 - builder:
638     name: 'foreman-deploy'
639     builders:
640         - shell: |
641             #!/bin/bash
642             set -o errexit
643             set -o nounset
644             set -o pipefail
645
646             # log info to console
647             echo "Starting the deployment using $INSTALLER. This could take some time..."
648             echo "--------------------------------------------------------"
649             echo
650
651             # cleanup first
652             sudo $WORKSPACE/common/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
653
654             echo "Sleeping for 60 seconds between clean and deploy to allow nodes to power off"
655             sleep 60
656
657             # and then initiate deployment
658             sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
659
660             echo
661             echo "--------------------------------------------------------"
662             echo "Done!"
663
664 - builder:
665     name: 'foreman-deploy-virtual'
666     builders:
667         - shell: |
668             #!/bin/bash
669             set -o errexit
670             set -o nounset
671             set -o pipefail
672
673             # log info to console
674             echo "Starting the virtual deployment using $INSTALLER. This could take some time..."
675             echo "--------------------------------------------------------"
676             echo
677
678             # cleanup baremetal first (in case baremetal was being used on pod2, remove when moved to isolated Virtual pod)
679             sudo $WORKSPACE/common/ci/clean.sh
680
681             # initiate virtual deployment
682             sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -virtual
683
684             echo
685             echo "--------------------------------------------------------"
686             echo "Done!"
687
688 - builder:
689     name: 'foreman-upload-artifact'
690     builders:
691         - shell: |
692             #!/bin/bash
693             set -o errexit
694             set -o nounset
695             set -o pipefail
696
697             # log info to console
698             echo "Uploading the $INSTALLER artifact. This could take some time..."
699             echo "--------------------------------------------------------"
700             echo
701
702             # source the opnfv.properties to get ARTIFACT_VERSION
703             source $WORKSPACE/opnfv.properties
704
705             # upload artifact and additional files to google storage
706             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
707             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
708             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
709
710             echo
711             echo "--------------------------------------------------------"
712             echo "Done!"
713             echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
714
715 - builder:
716     name: 'foreman-workspace-cleanup'
717     builders:
718         - shell: |
719             #!/bin/bash
720             set -o errexit
721             set -o nounset
722             set -o pipefail
723
724             # delete everything that is in $WORKSPACE
725             /bin/rm -rf $WORKSPACE
726
727 ########################
728 # trigger macros
729 ########################
730 - trigger:
731     name: 'foreman-master'
732     triggers:
733         - timed: '0 11 * * *'
734
735 - trigger:
736     name: 'foreman-stable-arno'
737     triggers:
738         - timed: '0 12 * * *'