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