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