3 name: '{project-name}-ci-jobs'
6 - gerrit-jenkins-cfg-merge
7 - gerrit-jjb-deploy-job
12 name: '{project-name}-github-ci-jobs'
15 - github-jenkins-cfg-merge
16 - github-jjb-deploy-job
21 name: '{project-name}-packer-jobs'
25 - gerrit-packer-verify
29 name: '{project-name}-github-packer-jobs'
33 - github-packer-verify
42 - config-file-provider:
45 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
48 name: lf-infra-jjbini-sandbox
49 # TODO: Consolidate this into jjbini when JJB2.0 is available.
51 - config-file-provider:
53 - file-id: jjbini-sandbox
54 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
56 - lf_packer: &lf_packer_common
57 name: lf-packer-common
58 # Provide configuration common in packer jobs.
60 ######################
61 # Default parameters #
62 ######################
67 submodule-recursive: true
68 packer-cloud-settings: packer-cloud-env
75 project-type: freestyle
79 - lf-infra-properties:
84 - lf-infra-parameters:
88 lftools-version: '{lftools-version}'
89 - lf-packer-parameters:
90 packer-version: '{packer-version}'
94 build-timeout: '{build-timeout}'
95 jenkins-ssh-credential: '{jenkins-ssh-credential}'
101 name: lf-infra-jjb-parameters
105 default: '{jjb-version}'
106 description: Jenkins Job Builder version to download and install.
109 name: lf-packer-parameters
113 default: '{packer-version}'
114 description: Packer version to download and install.
116 - lf_jjb_common: &lf_jjb_common
119 ######################
120 # Default parameters #
121 ######################
127 submodule-recursive: true
129 gerrit_trigger_file_paths:
130 - compare-type: REG_EXP
131 pattern: '.*\.groovy'
132 - compare-type: REG_EXP
134 - compare-type: REG_EXP
135 pattern: '.*\.(yaml|yml)'
136 - compare-type: REG_EXP
137 pattern: '.*\/global-jjb'
139 # github_included_regions MUST match gerrit_trigger_file_paths
140 github_included_regions:
146 #####################
147 # Job Configuration #
148 #####################
150 project-type: freestyle
154 - lf-infra-properties:
156 build-days-to-keep: 7
159 - lf-infra-parameters:
163 lftools-version: '{lftools-version}'
164 - lf-infra-jjb-parameters:
165 jjb-version: '{jjb-version}'
169 build-timeout: '{build-timeout}'
170 jenkins-ssh-credential: '{jenkins-ssh-credential}'
175 ######################
176 # Gerrit Branch Lock #
177 ######################
180 name: '{project-name}-gerrit-branch-lock-{stream}'
181 id: gerrit-branch-lock
183 ######################
184 # Default parameters #
185 ######################
188 git-url: '$GIT_URL/$GERRIT_PROJECT'
190 gerrit_merge_triggers:
191 - comment-added-contains-event:
192 comment-contains-value: (un)?lock branch$
194 #####################
195 # Job Configuration #
196 #####################
198 project-type: freestyle
202 - lf-infra-properties:
204 build-days-to-keep: 1
207 - lf-infra-parameters:
211 lftools-version: '{lftools-version}'
216 jenkins-ssh-credential: '{jenkins-ssh-credential}'
219 - lf-infra-gerrit-scm:
223 submodule-recursive: false
224 choosing-strategy: default
225 jenkins-ssh-credential: '{jenkins-ssh-credential}'
229 server-name: '{gerrit-server-name}'
230 trigger-on: '{obj:gerrit_merge_triggers}'
232 - project-compare-type: ANT
233 project-pattern: '{project}'
235 - branch-compare-type: ANT
236 branch-pattern: '**/{branch}'
239 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
245 ##########################################
246 # Jenkins Configuration Management Merge #
247 ##########################################
250 name: lf-jenkins-cfg-clouds
254 properties-content: 'jenkins_silos={jenkins-silos}'
255 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
256 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
259 name: lf-jenkins-cfg-global-vars
263 properties-content: 'jenkins_silos={jenkins-silos}'
264 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
265 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
267 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
268 name: lf-jenkins-cfg-merge
270 ######################
271 # Default parameters #
272 ######################
276 git-url: '$GIT_URL/$GERRIT_PROJECT'
277 jenkins-silos: production sandbox
279 gerrit_merge_triggers:
280 - change-merged-event
281 - comment-added-contains-event:
282 comment-contains-value: remerge$
284 gerrit_trigger_file_paths:
286 pattern: 'jenkins-config/**'
288 #####################
289 # Job Configuration #
290 #####################
292 project-type: freestyle
297 - lf-infra-properties:
299 build-days-to-keep: 1
302 - lf-infra-parameters:
306 lftools-version: '{lftools-version}'
311 jenkins-ssh-credential: '{jenkins-ssh-credential}'
314 - shell: !include-raw-escape:
315 - ../shell/lftools-install.sh
316 - lf-jenkins-cfg-global-vars:
317 jenkins-silos: '{jenkins-silos}'
318 - lf-jenkins-cfg-clouds:
319 jenkins-silos: '{jenkins-silos}'
325 name: '{project-name}-jenkins-cfg-merge'
326 id: gerrit-jenkins-cfg-merge
327 <<: *lf_jenkins_cfg_merge
330 - lf-infra-gerrit-scm:
332 refspec: 'refs/heads/{branch}'
334 submodule-recursive: true
335 choosing-strategy: default
336 jenkins-ssh-credential: '{jenkins-ssh-credential}'
339 - timed: '{obj:cron}'
341 server-name: '{gerrit-server-name}'
342 trigger-on: '{obj:gerrit_merge_triggers}'
344 - project-compare-type: ANT
345 project-pattern: '{project}'
347 - branch-compare-type: ANT
348 branch-pattern: '**/{branch}'
349 file-paths: '{obj:gerrit_trigger_file_paths}'
352 name: '{project-name}-jenkins-cfg-merge'
353 id: github-jenkins-cfg-merge
354 <<: *lf_jenkins_cfg_merge
358 url: '{git-url}/{github-org}/{project}'
361 - lf-infra-github-scm:
362 url: '{git-clone-url}{github-org}/{project}'
364 branch: 'refs/heads/{branch}'
365 submodule-recursive: true
366 choosing-strategy: default
367 jenkins-ssh-credential: '{jenkins-ssh-credential}'
370 - timed: '{obj:cron}'
374 - lf-infra-github-pr-trigger:
375 trigger-phrase: '^remerge$'
376 only-trigger-phrase: true
377 status-context: 'Jenkins CFG Merge'
380 github-org: '{github-org}'
381 github_pr_whitelist: '{obj:github_pr_whitelist}'
382 github_pr_admin_list: '{obj:github_pr_admin_list}'
389 - lf_jjb_deploy_job: &lf_jjb_deploy_job
390 name: lf-jjb-deploy-job
392 ######################
393 # Default parameters #
394 ######################
397 git-url: '$GIT_URL/$GERRIT_PROJECT'
399 gerrit_jjb_deploy_job_triggers:
400 - comment-added-contains-event:
401 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
403 #####################
404 # Job Configuration #
405 #####################
407 project-type: freestyle
412 - lf-infra-properties:
414 build-days-to-keep: 1
417 - lf-infra-parameters:
421 lftools-version: '{lftools-version}'
426 jenkins-ssh-credential: '{jenkins-ssh-credential}'
430 pip-packages: jenkins-job-builder
431 - lf-infra-jjbini-sandbox
432 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
438 name: '{project-name}-jjb-deploy-job'
439 id: gerrit-jjb-deploy-job
440 <<: *lf_jjb_deploy_job
443 - lf-infra-gerrit-scm:
445 refspec: 'refs/heads/{branch}'
447 submodule-recursive: true
448 choosing-strategy: default
449 jenkins-ssh-credential: '{jenkins-ssh-credential}'
453 server-name: '{gerrit-server-name}'
454 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
456 - project-compare-type: ANT
457 project-pattern: '**'
459 - branch-compare-type: ANT
468 name: '{project-name}-jjb-deploy-job'
469 id: github-jjb-deploy-job
470 <<: *lf_jjb_deploy_job
474 url: '{git-url}/{github-org}/{project}'
477 - lf-infra-github-scm:
478 url: '{git-clone-url}{github-org}/{project}'
479 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
481 submodule-recursive: true
482 choosing-strategy: default
483 jenkins-ssh-credential: '{jenkins-ssh-credential}'
486 - github-pull-request:
487 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
488 only-trigger-phrase: true
489 status-context: 'JJB Deploy Job'
497 - lf_jjb_merge: &lf_jjb_merge
500 ######################
501 # Default parameters #
502 ######################
504 gerrit_merge_triggers:
505 - change-merged-event
506 - comment-added-contains-event:
507 comment-contains-value: remerge$
509 #####################
510 # Job Configuration #
511 #####################
515 - shell: !include-raw-escape:
516 - ../shell/jjb-install.sh
517 - ../shell/jjb-merge-job.sh
518 - ../shell/jjb-cleanup.sh
521 name: '{project-name}-jjb-merge'
524 # yamllint disable-line rule:key-duplicates
527 git-url: '$GIT_URL/$GERRIT_PROJECT'
530 - lf-infra-gerrit-scm:
534 submodule-recursive: '{submodule-recursive}'
535 choosing-strategy: default
536 jenkins-ssh-credential: '{jenkins-ssh-credential}'
540 server-name: '{gerrit-server-name}'
541 trigger-on: '{obj:gerrit_merge_triggers}'
543 - project-compare-type: ANT
544 project-pattern: '{project}'
546 - branch-compare-type: ANT
547 branch-pattern: '**/{branch}'
548 file-paths: '{obj:gerrit_trigger_file_paths}'
551 name: '{project-name}-jjb-merge'
554 # yamllint disable-line rule:key-duplicates
557 #####################
558 # Job Configuration #
559 #####################
563 url: '{git-url}/{github-org}/{project}'
566 - lf-infra-github-scm:
567 url: '{git-clone-url}{github-org}/{project}'
569 branch: 'refs/heads/{branch}'
570 submodule-recursive: '{submodule-recursive}'
571 choosing-strategy: default
572 jenkins-ssh-credential: '{jenkins-ssh-credential}'
578 - github-pull-request:
579 trigger-phrase: '^remerge$'
580 only-trigger-phrase: true
581 status-context: 'JJB Merge'
586 white-list: '{obj:github_pr_whitelist}'
587 admin-list: '{obj:github_pr_admin_list}'
588 included-regions: '{obj:github_included_regions}'
594 - lf_jjb_verify: &lf_jjb_verify
597 ######################
598 # Default parameters #
599 ######################
601 gerrit_verify_triggers:
602 - patchset-created-event:
604 exclude-trivial-rebase: false
605 exclude-no-code-change: false
606 - draft-published-event
607 - comment-added-contains-event:
608 comment-contains-value: recheck$
610 #####################
611 # Job Configuration #
612 #####################
618 - shell: !include-raw-escape:
619 - ../shell/git-validate-jira-urls.sh
620 - ../shell/jjb-install.sh
621 - ../shell/jjb-verify-job.sh
622 - ../shell/jjb-check-unicode.sh
623 - ../shell/jjb-cleanup.sh
624 - lf-infra-gpg-verify-git-signature
627 name: '{project-name}-jjb-verify'
628 id: gerrit-jjb-verify
630 # yamllint disable-line rule:key-duplicates
633 ######################
634 # Default parameters #
635 ######################
637 git-url: '$GIT_URL/$GERRIT_PROJECT'
639 #####################
640 # Job Configuration #
641 #####################
644 - lf-infra-gerrit-scm:
646 refspec: '$GERRIT_REFSPEC'
647 branch: '$GERRIT_BRANCH'
648 submodule-recursive: '{submodule-recursive}'
649 choosing-strategy: gerrit
650 jenkins-ssh-credential: '{jenkins-ssh-credential}'
654 server-name: '{gerrit-server-name}'
655 trigger-on: '{obj:gerrit_verify_triggers}'
657 - project-compare-type: ANT
658 project-pattern: '{project}'
660 - branch-compare-type: ANT
661 branch-pattern: '**/{branch}'
662 file-paths: '{obj:gerrit_trigger_file_paths}'
665 name: '{project-name}-jjb-verify'
666 id: github-jjb-verify
668 # yamllint disable-line rule:key-duplicates
671 #####################
672 # Job Configuration #
673 #####################
677 url: '{git-url}/{github-org}/{project}'
680 - lf-infra-github-scm:
681 url: '{git-clone-url}{github-org}/{project}'
682 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
684 submodule-recursive: '{submodule-recursive}'
685 choosing-strategy: default
686 jenkins-ssh-credential: '{jenkins-ssh-credential}'
689 - github-pull-request:
690 trigger-phrase: '^recheck$'
691 only-trigger-phrase: false
692 status-context: 'JJB Verify'
695 included-regions: '{obj:github_included_regions}'
701 - lf_packer_merge: &lf_packer_merge
702 name: lf-packer-merge
704 #####################
705 # Job Configuration #
706 #####################
709 - lf-infra-packer-validate:
710 packer-cloud-settings: '{packer-cloud-settings}'
711 packer-version: '{packer-version}'
712 - lf-infra-packer-build:
713 packer-cloud-settings: '{packer-cloud-settings}'
714 packer-version: '{packer-version}'
715 platform: '{platforms}'
716 template: '{templates}'
719 name: '{project-name}-packer-merge-{platforms}-{templates}'
720 id: gerrit-packer-merge
721 <<: *lf_packer_common
722 # yamllint disable-line rule:key-duplicates
725 ######################
726 # Default parameters #
727 ######################
729 git-url: '$GIT_URL/$GERRIT_PROJECT'
731 gerrit_merge_triggers:
732 - change-merged-event
733 - comment-added-contains-event:
734 comment-contains-value: remerge$
736 #####################
737 # Job Configuration #
738 #####################
741 - lf-infra-gerrit-scm:
743 refspec: '$GERRIT_REFSPEC'
744 branch: '$GERRIT_BRANCH'
745 submodule-recursive: '{submodule-recursive}'
746 choosing-strategy: gerrit
747 jenkins-ssh-credential: '{jenkins-ssh-credential}'
750 - timed: '00 10 1 * *'
752 server-name: '{gerrit-server-name}'
753 trigger-on: '{obj:gerrit_merge_triggers}'
755 - project-compare-type: ANT
756 project-pattern: '{project}'
758 - branch-compare-type: ANT
759 branch-pattern: '**/{branch}'
761 - compare-type: REG_EXP
762 pattern: 'packer\/provision\/.*\.sh'
763 - compare-type: REG_EXP
764 pattern: 'packer\/provision\/{templates}\.yaml'
765 - compare-type: REG_EXP
766 pattern: 'packer\/provision\/local-{templates}\.yaml'
767 - compare-type: REG_EXP
768 pattern: 'packer\/templates\/{templates}\.json'
769 - compare-type: REG_EXP
770 pattern: 'packer\/vars\/{platforms}\.json'
773 name: '{project-name}-packer-merge-{platforms}-{templates}'
774 id: github-packer-merge
775 <<: *lf_packer_common
776 # yamllint disable-line rule:key-duplicates
779 #####################
780 # Job Configuration #
781 #####################
785 url: '{git-url}/{github-org}/{project}'
788 - lf-infra-github-scm:
789 url: '{git-clone-url}{github-org}/{project}'
791 branch: 'refs/heads/{branch}'
792 submodule-recursive: '{submodule-recursive}'
793 choosing-strategy: default
794 jenkins-ssh-credential: '{jenkins-ssh-credential}'
797 - timed: '00 10 1 * *'
802 - github-pull-request:
803 trigger-phrase: '^remerge$'
804 only-trigger-phrase: true
805 status-context: 'Packer {platforms}-{templates} Merge'
810 white-list: '{obj:github_pr_whitelist}'
811 admin-list: '{obj:github_pr_admin_list}'
812 # included-regions MUST match Gerrit Trigger file-paths
814 - 'packer\/provision\/.*\.sh'
815 - 'packer\/provision\/{templates}\.yaml'
816 - 'packer\/provision\/local-{templates}\.yaml'
817 - 'packer\/templates\/{templates}\.json'
818 - 'packer\/vars\/{platforms}\.json'
824 - lf_packer_verify: &lf_packer_verify
825 name: lf-packer-verify
827 ######################
828 # Default parameters #
829 ######################
833 gerrit_verify_triggers:
834 - patchset-created-event:
836 exclude-trivial-rebase: false
837 exclude-no-code-change: false
838 - draft-published-event
839 - comment-added-contains-event:
840 comment-contains-value: recheck$
842 gerrit_trigger_file_paths:
843 - compare-type: REG_EXP
844 pattern: 'packer\/.*'
846 # github_included_regions MUST match gerrit_trigger_file_paths
847 github_included_regions:
850 #####################
851 # Job Configuration #
852 #####################
857 - lf-infra-packer-validate:
858 packer-cloud-settings: '{packer-cloud-settings}'
859 packer-version: '{packer-version}'
862 name: '{project-name}-packer-verify'
863 id: gerrit-packer-verify
864 <<: *lf_packer_common
865 # yamllint disable-line rule:key-duplicates
866 <<: *lf_packer_verify
868 ######################
869 # Default parameters #
870 ######################
872 git-url: '$GIT_URL/$GERRIT_PROJECT'
874 #####################
875 # Job Configuration #
876 #####################
879 - lf-infra-gerrit-scm:
881 refspec: '$GERRIT_REFSPEC'
882 branch: '$GERRIT_BRANCH'
883 submodule-recursive: '{submodule-recursive}'
884 choosing-strategy: gerrit
885 jenkins-ssh-credential: '{jenkins-ssh-credential}'
889 server-name: '{gerrit-server-name}'
890 trigger-on: '{obj:gerrit_verify_triggers}'
892 - project-compare-type: ANT
893 project-pattern: '{project}'
895 - branch-compare-type: ANT
896 branch-pattern: '**/{branch}'
897 file-paths: '{obj:gerrit_trigger_file_paths}'
900 name: '{project-name}-packer-verify'
901 id: github-packer-verify
902 <<: *lf_packer_common
903 # yamllint disable-line rule:key-duplicates
904 <<: *lf_packer_verify
906 #####################
907 # Job Configuration #
908 #####################
912 url: '{git-url}/{github-org}/{project}'
915 - lf-infra-github-scm:
916 url: '{git-clone-url}{github-org}/{project}'
917 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
919 submodule-recursive: '{submodule-recursive}'
920 choosing-strategy: default
921 jenkins-ssh-credential: '{jenkins-ssh-credential}'
924 - github-pull-request:
925 trigger-phrase: '^recheck$'
926 only-trigger-phrase: false
927 status-context: 'Packer Verify'
930 included-regions: '{obj:github_included_regions}'