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_file_paths: &lf_packer_file_paths
57 name: lf-packer-file-paths
60 pattern: 'packer/vars/{platforms}.json'
62 pattern: 'packer/templates/{templates}.json'
64 pattern: 'packer/provision/*.sh'
66 pattern: 'packer/provision/{templates}.yaml'
68 pattern: 'packer/provision/local-{templates}.yaml'
70 pattern: 'packer/provision/lib/**'
72 - lf_packer: &lf_packer_common
73 name: lf-packer-common
74 # Provide configuration common in packer jobs.
76 ######################
77 # Default parameters #
78 ######################
83 submodule-recursive: true
84 packer-cloud-settings: packer-cloud-env
91 project-type: freestyle
95 - lf-infra-properties:
100 - lf-infra-parameters:
104 lftools-version: '{lftools-version}'
105 - lf-packer-parameters:
106 packer-version: '{packer-version}'
110 build-timeout: '{build-timeout}'
111 jenkins-ssh-credential: '{jenkins-ssh-credential}'
117 name: lf-infra-jjb-parameters
121 default: '{jjb-version}'
122 description: Jenkins Job Builder version to download and install.
125 name: lf-packer-parameters
129 default: '{packer-version}'
130 description: Packer version to download and install.
132 - lf_jjb_common: &lf_jjb_common
135 ######################
136 # Default parameters #
137 ######################
143 submodule-recursive: true
145 gerrit_trigger_file_paths:
146 - compare-type: REG_EXP
147 pattern: '.*\.groovy'
148 - compare-type: REG_EXP
150 - compare-type: REG_EXP
151 pattern: '.*\.(yaml|yml)'
152 - compare-type: REG_EXP
153 pattern: '.*\/global-jjb'
155 # github_included_regions MUST match gerrit_trigger_file_paths
156 github_included_regions:
162 #####################
163 # Job Configuration #
164 #####################
166 project-type: freestyle
170 - lf-infra-properties:
172 build-days-to-keep: 7
175 - lf-infra-parameters:
179 lftools-version: '{lftools-version}'
180 - lf-infra-jjb-parameters:
181 jjb-version: '{jjb-version}'
185 build-timeout: '{build-timeout}'
186 jenkins-ssh-credential: '{jenkins-ssh-credential}'
191 ######################
192 # Gerrit Branch Lock #
193 ######################
196 name: '{project-name}-gerrit-branch-lock-{stream}'
197 id: gerrit-branch-lock
199 ######################
200 # Default parameters #
201 ######################
204 git-url: '$GIT_URL/$GERRIT_PROJECT'
206 gerrit_merge_triggers:
207 - comment-added-contains-event:
208 comment-contains-value: (un)?lock branch$
210 #####################
211 # Job Configuration #
212 #####################
214 project-type: freestyle
218 - lf-infra-properties:
220 build-days-to-keep: 1
223 - lf-infra-parameters:
227 lftools-version: '{lftools-version}'
232 jenkins-ssh-credential: '{jenkins-ssh-credential}'
235 - lf-infra-gerrit-scm:
239 submodule-recursive: false
240 choosing-strategy: default
241 jenkins-ssh-credential: '{jenkins-ssh-credential}'
245 server-name: '{gerrit-server-name}'
246 trigger-on: '{obj:gerrit_merge_triggers}'
248 - project-compare-type: ANT
249 project-pattern: '{project}'
251 - branch-compare-type: ANT
252 branch-pattern: '**/{branch}'
255 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
261 ##########################################
262 # Jenkins Configuration Management Merge #
263 ##########################################
266 name: lf-jenkins-cfg-clouds
270 properties-content: 'jenkins_silos={jenkins-silos}'
271 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
272 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
275 name: lf-jenkins-cfg-global-vars
279 properties-content: 'jenkins_silos={jenkins-silos}'
280 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
281 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
283 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
284 name: lf-jenkins-cfg-merge
286 ######################
287 # Default parameters #
288 ######################
292 git-url: '$GIT_URL/$GERRIT_PROJECT'
293 jenkins-silos: production sandbox
295 gerrit_merge_triggers:
296 - change-merged-event
297 - comment-added-contains-event:
298 comment-contains-value: remerge$
300 gerrit_trigger_file_paths:
302 pattern: 'jenkins-config/**'
304 #####################
305 # Job Configuration #
306 #####################
308 project-type: freestyle
313 - lf-infra-properties:
315 build-days-to-keep: 1
318 - lf-infra-parameters:
322 lftools-version: '{lftools-version}'
327 jenkins-ssh-credential: '{jenkins-ssh-credential}'
330 - shell: !include-raw-escape:
331 - ../shell/lftools-install.sh
332 - lf-jenkins-cfg-global-vars:
333 jenkins-silos: '{jenkins-silos}'
334 - lf-jenkins-cfg-clouds:
335 jenkins-silos: '{jenkins-silos}'
341 name: '{project-name}-jenkins-cfg-merge'
342 id: gerrit-jenkins-cfg-merge
343 <<: *lf_jenkins_cfg_merge
346 - lf-infra-gerrit-scm:
348 refspec: 'refs/heads/{branch}'
350 submodule-recursive: true
351 choosing-strategy: default
352 jenkins-ssh-credential: '{jenkins-ssh-credential}'
355 - timed: '{obj:cron}'
357 server-name: '{gerrit-server-name}'
358 trigger-on: '{obj:gerrit_merge_triggers}'
360 - project-compare-type: ANT
361 project-pattern: '{project}'
363 - branch-compare-type: ANT
364 branch-pattern: '**/{branch}'
365 file-paths: '{obj:gerrit_trigger_file_paths}'
368 name: '{project-name}-jenkins-cfg-merge'
369 id: github-jenkins-cfg-merge
370 <<: *lf_jenkins_cfg_merge
374 url: '{git-url}/{github-org}/{project}'
377 - lf-infra-github-scm:
378 url: '{git-clone-url}{github-org}/{project}'
380 branch: 'refs/heads/{branch}'
381 submodule-recursive: true
382 choosing-strategy: default
383 jenkins-ssh-credential: '{jenkins-ssh-credential}'
386 - timed: '{obj:cron}'
390 - lf-infra-github-pr-trigger:
391 trigger-phrase: '^remerge$'
392 only-trigger-phrase: true
393 status-context: 'Jenkins CFG Merge'
396 github-org: '{github-org}'
397 github_pr_whitelist: '{obj:github_pr_whitelist}'
398 github_pr_admin_list: '{obj:github_pr_admin_list}'
405 - lf_jjb_deploy_job: &lf_jjb_deploy_job
406 name: lf-jjb-deploy-job
408 ######################
409 # Default parameters #
410 ######################
413 git-url: '$GIT_URL/$GERRIT_PROJECT'
415 gerrit_jjb_deploy_job_triggers:
416 - comment-added-contains-event:
417 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
419 #####################
420 # Job Configuration #
421 #####################
423 project-type: freestyle
428 - lf-infra-properties:
430 build-days-to-keep: 1
433 - lf-infra-parameters:
437 lftools-version: '{lftools-version}'
442 jenkins-ssh-credential: '{jenkins-ssh-credential}'
446 pip-packages: jenkins-job-builder
447 - lf-infra-jjbini-sandbox
448 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
454 name: '{project-name}-jjb-deploy-job'
455 id: gerrit-jjb-deploy-job
456 <<: *lf_jjb_deploy_job
459 - lf-infra-gerrit-scm:
461 refspec: 'refs/heads/{branch}'
463 submodule-recursive: true
464 choosing-strategy: default
465 jenkins-ssh-credential: '{jenkins-ssh-credential}'
469 server-name: '{gerrit-server-name}'
470 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
472 - project-compare-type: ANT
473 project-pattern: '**'
475 - branch-compare-type: ANT
484 name: '{project-name}-jjb-deploy-job'
485 id: github-jjb-deploy-job
486 <<: *lf_jjb_deploy_job
490 url: '{git-url}/{github-org}/{project}'
493 - lf-infra-github-scm:
494 url: '{git-clone-url}{github-org}/{project}'
495 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
497 submodule-recursive: true
498 choosing-strategy: default
499 jenkins-ssh-credential: '{jenkins-ssh-credential}'
502 - github-pull-request:
503 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
504 only-trigger-phrase: true
505 status-context: 'JJB Deploy Job'
513 - lf_jjb_merge: &lf_jjb_merge
516 ######################
517 # Default parameters #
518 ######################
520 gerrit_merge_triggers:
521 - change-merged-event
522 - comment-added-contains-event:
523 comment-contains-value: remerge$
525 #####################
526 # Job Configuration #
527 #####################
531 - shell: !include-raw-escape:
532 - ../shell/jjb-install.sh
533 - ../shell/jjb-merge-job.sh
534 - ../shell/jjb-cleanup.sh
537 name: '{project-name}-jjb-merge'
540 # yamllint disable-line rule:key-duplicates
543 git-url: '$GIT_URL/$GERRIT_PROJECT'
546 - lf-infra-gerrit-scm:
550 submodule-recursive: '{submodule-recursive}'
551 choosing-strategy: default
552 jenkins-ssh-credential: '{jenkins-ssh-credential}'
556 server-name: '{gerrit-server-name}'
557 trigger-on: '{obj:gerrit_merge_triggers}'
559 - project-compare-type: ANT
560 project-pattern: '{project}'
562 - branch-compare-type: ANT
563 branch-pattern: '**/{branch}'
564 file-paths: '{obj:gerrit_trigger_file_paths}'
567 name: '{project-name}-jjb-merge'
570 # yamllint disable-line rule:key-duplicates
573 #####################
574 # Job Configuration #
575 #####################
579 url: '{git-url}/{github-org}/{project}'
582 - lf-infra-github-scm:
583 url: '{git-clone-url}{github-org}/{project}'
585 branch: 'refs/heads/{branch}'
586 submodule-recursive: '{submodule-recursive}'
587 choosing-strategy: default
588 jenkins-ssh-credential: '{jenkins-ssh-credential}'
594 - github-pull-request:
595 trigger-phrase: '^remerge$'
596 only-trigger-phrase: true
597 status-context: 'JJB Merge'
602 white-list: '{obj:github_pr_whitelist}'
603 admin-list: '{obj:github_pr_admin_list}'
604 included-regions: '{obj:github_included_regions}'
610 - lf_jjb_verify: &lf_jjb_verify
613 ######################
614 # Default parameters #
615 ######################
617 gerrit_verify_triggers:
618 - patchset-created-event:
620 exclude-trivial-rebase: false
621 exclude-no-code-change: false
622 - draft-published-event
623 - comment-added-contains-event:
624 comment-contains-value: recheck$
626 #####################
627 # Job Configuration #
628 #####################
634 - shell: !include-raw-escape:
635 - ../shell/git-validate-jira-urls.sh
636 - ../shell/jjb-install.sh
637 - ../shell/jjb-verify-job.sh
638 - ../shell/jjb-check-unicode.sh
639 - ../shell/jjb-cleanup.sh
640 - lf-infra-gpg-verify-git-signature
643 name: '{project-name}-jjb-verify'
644 id: gerrit-jjb-verify
646 # yamllint disable-line rule:key-duplicates
649 ######################
650 # Default parameters #
651 ######################
653 git-url: '$GIT_URL/$GERRIT_PROJECT'
655 #####################
656 # Job Configuration #
657 #####################
660 - lf-infra-gerrit-scm:
662 refspec: '$GERRIT_REFSPEC'
663 branch: '$GERRIT_BRANCH'
664 submodule-recursive: '{submodule-recursive}'
665 choosing-strategy: gerrit
666 jenkins-ssh-credential: '{jenkins-ssh-credential}'
670 server-name: '{gerrit-server-name}'
671 trigger-on: '{obj:gerrit_verify_triggers}'
673 - project-compare-type: ANT
674 project-pattern: '{project}'
676 - branch-compare-type: ANT
677 branch-pattern: '**/{branch}'
678 file-paths: '{obj:gerrit_trigger_file_paths}'
681 name: '{project-name}-jjb-verify'
682 id: github-jjb-verify
684 # yamllint disable-line rule:key-duplicates
687 #####################
688 # Job Configuration #
689 #####################
693 url: '{git-url}/{github-org}/{project}'
696 - lf-infra-github-scm:
697 url: '{git-clone-url}{github-org}/{project}'
698 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
700 submodule-recursive: '{submodule-recursive}'
701 choosing-strategy: default
702 jenkins-ssh-credential: '{jenkins-ssh-credential}'
705 - github-pull-request:
706 trigger-phrase: '^recheck$'
707 only-trigger-phrase: false
708 status-context: 'JJB Verify'
711 included-regions: '{obj:github_included_regions}'
717 - lf_packer_merge: &lf_packer_merge
718 name: lf-packer-merge
720 ######################
721 # Default parameters #
722 ######################
724 gerrit_merge_triggers:
725 - change-merged-event
726 - comment-added-contains-event:
727 comment-contains-value: remerge$
729 #####################
730 # Job Configuration #
731 #####################
734 - lf-infra-packer-validate:
735 packer-cloud-settings: '{packer-cloud-settings}'
736 packer-version: '{packer-version}'
737 - lf-infra-packer-build:
738 packer-cloud-settings: '{packer-cloud-settings}'
739 packer-version: '{packer-version}'
740 platform: '{platforms}'
741 template: '{templates}'
744 name: '{project-name}-packer-merge-{platforms}-{templates}'
745 id: gerrit-packer-merge
746 <<: *lf_packer_common
747 # yamllint disable-line rule:key-duplicates
750 git-url: '$GIT_URL/$GERRIT_PROJECT'
753 - lf-infra-gerrit-scm:
755 refspec: '$GERRIT_REFSPEC'
756 branch: '$GERRIT_BRANCH'
757 submodule-recursive: '{submodule-recursive}'
758 choosing-strategy: gerrit
759 jenkins-ssh-credential: '{jenkins-ssh-credential}'
762 - timed: '00 10 1 * *'
764 server-name: '{gerrit-server-name}'
765 trigger-on: '{obj:gerrit_merge_triggers}'
767 - project-compare-type: ANT
768 project-pattern: '{project}'
770 - branch-compare-type: ANT
771 branch-pattern: '**/{branch}'
772 <<: *lf_packer_file_paths
775 name: '{project-name}-packer-merge-{platforms}-{templates}'
776 id: github-packer-merge
777 <<: *lf_packer_common
778 # yamllint disable-line rule:key-duplicates
783 url: '{git-url}/{github-org}/{project}'
786 - lf-infra-github-scm:
787 url: '{git-clone-url}{github-org}/{project}'
789 branch: 'refs/heads/{branch}'
790 submodule-recursive: '{submodule-recursive}'
791 choosing-strategy: default
792 jenkins-ssh-credential: '{jenkins-ssh-credential}'
795 - timed: '00 10 1 * *'
799 - lf-infra-github-pr-trigger:
800 trigger-phrase: '^remerge$'
801 only-trigger-phrase: true
802 status-context: 'Packer {platforms}-${templates} Merge'
805 github-org: '{github-org}'
806 github_pr_whitelist: '{obj:github_pr_whitelist}'
807 github_pr_admin_list: '{obj:github_pr_admin_list}'
813 - lf_packer_verify: &lf_packer_verify
814 name: lf-packer-verify
816 ######################
817 # Default parameters #
818 ######################
822 gerrit_verify_triggers:
823 - patchset-created-event:
825 exclude-trivial-rebase: false
826 exclude-no-code-change: false
827 - draft-published-event
828 - comment-added-contains-event:
829 comment-contains-value: recheck$
831 gerrit_trigger_file_paths:
833 pattern: 'packer/vars/**.json'
835 pattern: 'packer/templates/**.json'
837 pattern: 'packer/provision/**.sh'
839 pattern: 'packer/provision/lib/**'
841 #####################
842 # Job Configuration #
843 #####################
848 - lf-infra-packer-validate:
849 packer-cloud-settings: '{packer-cloud-settings}'
850 packer-version: '{packer-version}'
853 name: '{project-name}-packer-verify'
854 id: gerrit-packer-verify
855 <<: *lf_packer_common
856 # yamllint disable-line rule:key-duplicates
857 <<: *lf_packer_verify
859 git-url: '$GIT_URL/$GERRIT_PROJECT'
862 - lf-infra-gerrit-scm:
864 refspec: '$GERRIT_REFSPEC'
865 branch: '$GERRIT_BRANCH'
866 submodule-recursive: '{submodule-recursive}'
867 choosing-strategy: gerrit
868 jenkins-ssh-credential: '{jenkins-ssh-credential}'
872 server-name: '{gerrit-server-name}'
873 trigger-on: '{obj:gerrit_verify_triggers}'
875 - project-compare-type: ANT
876 project-pattern: '{project}'
878 - branch-compare-type: ANT
879 branch-pattern: '**/{branch}'
880 file-paths: '{obj:gerrit_trigger_file_paths}'
883 name: '{project-name}-packer-verify'
884 id: github-packer-verify
885 <<: *lf_packer_common
886 # yamllint disable-line rule:key-duplicates
887 <<: *lf_packer_verify
891 url: '{git-url}/{github-org}/{project}'
894 - lf-infra-github-scm:
895 url: '{git-clone-url}{github-org}/{project}'
896 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
898 submodule-recursive: '{submodule-recursive}'
899 choosing-strategy: default
900 jenkins-ssh-credential: '{jenkins-ssh-credential}'
903 - lf-infra-github-pr-trigger:
904 trigger-phrase: '^recheck$'
905 only-trigger-phrase: false
906 status-context: 'Packer Verify'
912 github_pr_admin_list: