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}-info-yaml-jobs'
24 - gerrit-info-yaml-verify
27 name: '{project-name}-github-info-yaml-jobs'
30 - github-info-yaml-verify
33 name: '{project-name}-packer-jobs'
37 - gerrit-packer-verify
41 name: '{project-name}-github-packer-jobs'
45 - github-packer-verify
54 - config-file-provider:
57 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
60 name: lf-infra-jjbini-sandbox
61 # TODO: Consolidate this into jjbini when JJB2.0 is available.
63 - config-file-provider:
65 - file-id: jjbini-sandbox
66 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
68 - lf_packer: &lf_packer_common
69 name: lf-packer-common
70 # Provide configuration common in packer jobs.
72 ######################
73 # Default parameters #
74 ######################
80 submodule-recursive: true
81 packer-cloud-settings: packer-cloud-env
88 project-type: freestyle
92 - lf-infra-properties:
97 - lf-infra-parameters:
101 lftools-version: '{lftools-version}'
102 - lf-packer-parameters:
103 packer-version: '{packer-version}'
107 build-timeout: '{build-timeout}'
108 jenkins-ssh-credential: '{jenkins-ssh-credential}'
114 name: lf-infra-jjb-parameters
118 default: '{jjb-version}'
119 description: Jenkins Job Builder version to download and install.
122 name: lf-packer-parameters
126 default: '{packer-version}'
127 description: Packer version to download and install.
129 - lf_jjb_common: &lf_jjb_common
132 ######################
133 # Default parameters #
134 ######################
140 submodule-recursive: true
142 gerrit_trigger_file_paths:
143 - compare-type: REG_EXP
144 pattern: '.*\.groovy'
145 - compare-type: REG_EXP
147 - compare-type: REG_EXP
148 pattern: '.*\.(yaml|yml)'
149 - compare-type: REG_EXP
150 pattern: '.*\/global-jjb'
152 # github_included_regions MUST match gerrit_trigger_file_paths
153 github_included_regions:
159 #####################
160 # Job Configuration #
161 #####################
163 project-type: freestyle
167 - lf-infra-properties:
169 build-days-to-keep: 7
172 - lf-infra-parameters:
176 lftools-version: '{lftools-version}'
177 - lf-infra-jjb-parameters:
178 jjb-version: '{jjb-version}'
182 build-timeout: '{build-timeout}'
183 jenkins-ssh-credential: '{jenkins-ssh-credential}'
188 ######################
189 # Gerrit Branch Lock #
190 ######################
193 name: '{project-name}-gerrit-branch-lock-{stream}'
194 id: gerrit-branch-lock
196 ######################
197 # Default parameters #
198 ######################
201 git-url: '$GIT_URL/$GERRIT_PROJECT'
203 gerrit_merge_triggers:
204 - comment-added-contains-event:
205 comment-contains-value: (un)?lock branch$
207 #####################
208 # Job Configuration #
209 #####################
211 project-type: freestyle
215 - lf-infra-properties:
217 build-days-to-keep: 1
220 - lf-infra-parameters:
224 lftools-version: '{lftools-version}'
229 jenkins-ssh-credential: '{jenkins-ssh-credential}'
232 - lf-infra-gerrit-scm:
236 submodule-recursive: false
237 choosing-strategy: default
238 jenkins-ssh-credential: '{jenkins-ssh-credential}'
242 server-name: '{gerrit-server-name}'
243 trigger-on: '{obj:gerrit_merge_triggers}'
245 - project-compare-type: ANT
246 project-pattern: '{project}'
248 - branch-compare-type: ANT
249 branch-pattern: '**/{branch}'
252 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
258 ##########################################
259 # Jenkins Configuration Management Merge #
260 ##########################################
263 name: lf-jenkins-cfg-clouds
267 properties-content: 'jenkins_silos={jenkins-silos}'
268 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
269 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
272 name: lf-jenkins-cfg-global-vars
276 properties-content: 'jenkins_silos={jenkins-silos}'
277 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
278 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
280 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
281 name: lf-jenkins-cfg-merge
283 ######################
284 # Default parameters #
285 ######################
289 git-url: '$GIT_URL/$GERRIT_PROJECT'
290 jenkins-silos: production sandbox
292 gerrit_merge_triggers:
293 - change-merged-event
294 - comment-added-contains-event:
295 comment-contains-value: remerge$
297 gerrit_trigger_file_paths:
298 - compare-type: REG_EXP
299 pattern: 'jenkins-config\/.*'
301 # github_included_regions MUST match gerrit_trigger_file_paths
302 github_included_regions:
303 - 'jenkins-config\/.*'
305 #####################
306 # Job Configuration #
307 #####################
309 project-type: freestyle
314 - lf-infra-properties:
316 build-days-to-keep: 1
319 - lf-infra-parameters:
323 lftools-version: '{lftools-version}'
328 jenkins-ssh-credential: '{jenkins-ssh-credential}'
331 - shell: !include-raw-escape:
332 - ../shell/lftools-install.sh
333 - lf-jenkins-cfg-global-vars:
334 jenkins-silos: '{jenkins-silos}'
335 - lf-jenkins-cfg-clouds:
336 jenkins-silos: '{jenkins-silos}'
342 name: '{project-name}-jenkins-cfg-merge'
343 id: gerrit-jenkins-cfg-merge
344 <<: *lf_jenkins_cfg_merge
347 - lf-infra-gerrit-scm:
349 refspec: 'refs/heads/{branch}'
351 submodule-recursive: true
352 choosing-strategy: default
353 jenkins-ssh-credential: '{jenkins-ssh-credential}'
356 - timed: '{obj:cron}'
358 server-name: '{gerrit-server-name}'
359 trigger-on: '{obj:gerrit_merge_triggers}'
361 - project-compare-type: ANT
362 project-pattern: '{project}'
364 - branch-compare-type: ANT
365 branch-pattern: '**/{branch}'
366 file-paths: '{obj:gerrit_trigger_file_paths}'
369 name: '{project-name}-jenkins-cfg-merge'
370 id: github-jenkins-cfg-merge
371 <<: *lf_jenkins_cfg_merge
375 url: '{git-url}/{github-org}/{project}'
378 - lf-infra-github-scm:
379 url: '{git-clone-url}{github-org}/{project}'
381 branch: 'refs/heads/{branch}'
382 submodule-recursive: true
383 choosing-strategy: default
384 jenkins-ssh-credential: '{jenkins-ssh-credential}'
387 - timed: '{obj:cron}'
391 - github-pull-request:
392 trigger-phrase: '^remerge$'
393 only-trigger-phrase: true
394 status-context: 'Jenkins CFG Merge'
399 white-list: '{obj:github_pr_whitelist}'
400 admin-list: '{obj:github_pr_admin_list}'
401 included-regions: '{obj:github_included_regions}'
407 - lf_jjb_deploy_job: &lf_jjb_deploy_job
408 name: lf-jjb-deploy-job
410 ######################
411 # Default parameters #
412 ######################
415 # jjb-deploy should always clone $PROJECT regardless of what
416 # $GERRIT_PROJECT triggered the job.
417 git-url: '$GIT_URL/$PROJECT'
419 gerrit_jjb_deploy_job_triggers:
420 - comment-added-contains-event:
421 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
423 #####################
424 # Job Configuration #
425 #####################
427 project-type: freestyle
432 - lf-infra-properties:
434 build-days-to-keep: 1
437 - lf-infra-parameters:
441 lftools-version: '{lftools-version}'
446 jenkins-ssh-credential: '{jenkins-ssh-credential}'
450 pip-packages: jenkins-job-builder
451 - lf-infra-jjbini-sandbox
452 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
458 name: '{project-name}-jjb-deploy-job'
459 id: gerrit-jjb-deploy-job
460 <<: *lf_jjb_deploy_job
463 - lf-infra-gerrit-scm:
465 refspec: 'refs/heads/{branch}'
467 submodule-recursive: true
468 choosing-strategy: default
469 jenkins-ssh-credential: '{jenkins-ssh-credential}'
473 server-name: '{gerrit-server-name}'
474 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
476 - project-compare-type: ANT
477 project-pattern: '**'
479 - branch-compare-type: ANT
488 name: '{project-name}-jjb-deploy-job'
489 id: github-jjb-deploy-job
490 <<: *lf_jjb_deploy_job
494 url: '{git-url}/{github-org}/{project}'
497 - lf-infra-github-scm:
498 url: '{git-clone-url}{github-org}/{project}'
499 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
501 submodule-recursive: true
502 choosing-strategy: default
503 jenkins-ssh-credential: '{jenkins-ssh-credential}'
506 - github-pull-request:
507 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
508 only-trigger-phrase: true
509 status-context: 'JJB Deploy Job'
517 - lf_jjb_merge: &lf_jjb_merge
520 ######################
521 # Default parameters #
522 ######################
524 gerrit_merge_triggers:
525 - change-merged-event
526 - comment-added-contains-event:
527 comment-contains-value: remerge$
529 #####################
530 # Job Configuration #
531 #####################
535 - shell: !include-raw-escape:
536 - ../shell/jjb-install.sh
537 - ../shell/jjb-merge-job.sh
538 - ../shell/jjb-cleanup.sh
541 name: '{project-name}-jjb-merge'
544 # yamllint disable-line rule:key-duplicates
547 git-url: '$GIT_URL/$GERRIT_PROJECT'
550 - lf-infra-gerrit-scm:
554 submodule-recursive: '{submodule-recursive}'
555 choosing-strategy: default
556 jenkins-ssh-credential: '{jenkins-ssh-credential}'
560 server-name: '{gerrit-server-name}'
561 trigger-on: '{obj:gerrit_merge_triggers}'
563 - project-compare-type: ANT
564 project-pattern: '{project}'
566 - branch-compare-type: ANT
567 branch-pattern: '**/{branch}'
568 file-paths: '{obj:gerrit_trigger_file_paths}'
571 name: '{project-name}-jjb-merge'
574 # yamllint disable-line rule:key-duplicates
577 #####################
578 # Job Configuration #
579 #####################
583 url: '{git-url}/{github-org}/{project}'
586 - lf-infra-github-scm:
587 url: '{git-clone-url}{github-org}/{project}'
589 branch: 'refs/heads/{branch}'
590 submodule-recursive: '{submodule-recursive}'
591 choosing-strategy: default
592 jenkins-ssh-credential: '{jenkins-ssh-credential}'
598 - github-pull-request:
599 trigger-phrase: '^remerge$'
600 only-trigger-phrase: true
601 status-context: 'JJB Merge'
606 white-list: '{obj:github_pr_whitelist}'
607 admin-list: '{obj:github_pr_admin_list}'
608 included-regions: '{obj:github_included_regions}'
614 - lf_jjb_verify: &lf_jjb_verify
617 ######################
618 # Default parameters #
619 ######################
621 gerrit_verify_triggers:
622 - patchset-created-event:
624 exclude-trivial-rebase: false
625 exclude-no-code-change: false
626 - draft-published-event
627 - comment-added-contains-event:
628 comment-contains-value: recheck$
630 #####################
631 # Job Configuration #
632 #####################
638 - shell: !include-raw-escape:
639 - ../shell/git-validate-jira-urls.sh
640 - ../shell/jjb-install.sh
641 - ../shell/jjb-verify-job.sh
642 - ../shell/jjb-check-unicode.sh
643 - ../shell/jjb-cleanup.sh
644 - lf-infra-gpg-verify-git-signature
647 name: '{project-name}-jjb-verify'
648 id: gerrit-jjb-verify
650 # yamllint disable-line rule:key-duplicates
653 ######################
654 # Default parameters #
655 ######################
657 git-url: '$GIT_URL/$GERRIT_PROJECT'
659 #####################
660 # Job Configuration #
661 #####################
664 - lf-infra-gerrit-scm:
666 refspec: '$GERRIT_REFSPEC'
667 branch: '$GERRIT_BRANCH'
668 submodule-recursive: '{submodule-recursive}'
669 choosing-strategy: gerrit
670 jenkins-ssh-credential: '{jenkins-ssh-credential}'
674 server-name: '{gerrit-server-name}'
675 trigger-on: '{obj:gerrit_verify_triggers}'
677 - project-compare-type: ANT
678 project-pattern: '{project}'
680 - branch-compare-type: ANT
681 branch-pattern: '**/{branch}'
682 file-paths: '{obj:gerrit_trigger_file_paths}'
685 name: '{project-name}-jjb-verify'
686 id: github-jjb-verify
688 # yamllint disable-line rule:key-duplicates
691 #####################
692 # Job Configuration #
693 #####################
697 url: '{git-url}/{github-org}/{project}'
700 - lf-infra-github-scm:
701 url: '{git-clone-url}{github-org}/{project}'
702 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
704 submodule-recursive: '{submodule-recursive}'
705 choosing-strategy: default
706 jenkins-ssh-credential: '{jenkins-ssh-credential}'
709 - github-pull-request:
710 trigger-phrase: '^recheck$'
711 only-trigger-phrase: false
712 status-context: 'JJB Verify'
715 included-regions: '{obj:github_included_regions}'
721 - lf_info_yaml_verify: &lf_info_yaml_verify
722 name: lf-info-yaml-verify
724 ######################
725 # Default parameters #
726 ######################
728 gerrit_verify_triggers:
729 - patchset-created-event:
731 exclude-trivial-rebase: false
732 exclude-no-code-change: false
733 - draft-published-event
734 - comment-added-contains-event:
735 comment-contains-value: recheck$
737 #####################
738 # Job Configuration #
739 #####################
744 - shell: !include-raw-escape:
745 - ../shell/git-validate-info-yaml.sh
746 - ../shell/info-file-validate.sh
749 name: '{project-name}-info-yaml-verify'
750 id: gerrit-info-yaml-verify
752 # yamllint disable-line rule:key-duplicates
753 <<: *lf_info_yaml_verify
755 git-url: '$GIT_URL/$GERRIT_PROJECT'
758 - lf-infra-gerrit-scm:
760 refspec: '$GERRIT_REFSPEC'
761 branch: '$GERRIT_BRANCH'
762 submodule-recursive: '{submodule-recursive}'
763 choosing-strategy: gerrit
764 jenkins-ssh-credential: '{jenkins-ssh-credential}'
768 server-name: '{gerrit-server-name}'
769 trigger-on: '{obj:gerrit_verify_triggers}'
771 - project-compare-type: ANT
772 project-pattern: '{project}'
774 - branch-compare-type: ANT
775 branch-pattern: '**/{branch}'
777 - compare-type: REG_EXP
781 name: '{project-name}-info-yaml-verify'
782 id: github-info-yaml-verify
784 # yamllint disable-line rule:key-duplicates
785 <<: *lf_info_yaml_verify
789 url: '{git-url}/{github-org}/{project}'
792 - lf-infra-github-scm:
793 url: '{git-clone-url}{github-org}/{project}'
794 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
796 submodule-recursive: '{submodule-recursive}'
797 choosing-strategy: default
798 jenkins-ssh-credential: '{jenkins-ssh-credential}'
801 - github-pull-request:
802 trigger-phrase: '^recheck$'
803 only-trigger-phrase: false
804 status-context: 'INFO File Verify'
807 # included-regions MUST match gerrit file-paths
808 included-regions: 'INFO.yaml'
814 - lf_packer_merge: &lf_packer_merge
815 name: lf-packer-merge
817 #####################
818 # Job Configuration #
819 #####################
822 - lf-infra-packer-validate:
823 packer-cloud-settings: '{packer-cloud-settings}'
824 packer-version: '{packer-version}'
825 - lf-infra-packer-build:
826 packer-cloud-settings: '{packer-cloud-settings}'
827 packer-version: '{packer-version}'
828 platform: '{platforms}'
829 template: '{templates}'
832 name: '{project-name}-packer-merge-{platforms}-{templates}'
833 id: gerrit-packer-merge
834 <<: *lf_packer_common
835 # yamllint disable-line rule:key-duplicates
838 ######################
839 # Default parameters #
840 ######################
842 git-url: '$GIT_URL/$GERRIT_PROJECT'
844 gerrit_merge_triggers:
845 - change-merged-event
846 - comment-added-contains-event:
847 comment-contains-value: remerge$
849 #####################
850 # Job Configuration #
851 #####################
854 - lf-infra-gerrit-scm:
856 refspec: '$GERRIT_REFSPEC'
857 branch: '$GERRIT_BRANCH'
858 submodule-recursive: '{submodule-recursive}'
859 choosing-strategy: gerrit
860 jenkins-ssh-credential: '{jenkins-ssh-credential}'
865 server-name: '{gerrit-server-name}'
866 trigger-on: '{obj:gerrit_merge_triggers}'
868 - project-compare-type: ANT
869 project-pattern: '{project}'
871 - branch-compare-type: ANT
872 branch-pattern: '**/{branch}'
874 - compare-type: REG_EXP
875 pattern: 'packer\/provision\/.*\.sh'
876 - compare-type: REG_EXP
877 pattern: 'packer\/provision\/{templates}\.yaml'
878 - compare-type: REG_EXP
879 pattern: 'packer\/provision\/local-{templates}\.yaml'
880 - compare-type: REG_EXP
881 pattern: 'packer\/templates\/{templates}\.json'
882 - compare-type: REG_EXP
883 pattern: 'packer\/vars\/{platforms}\.json'
886 name: '{project-name}-packer-merge-{platforms}-{templates}'
887 id: github-packer-merge
888 <<: *lf_packer_common
889 # yamllint disable-line rule:key-duplicates
892 #####################
893 # Job Configuration #
894 #####################
898 url: '{git-url}/{github-org}/{project}'
901 - lf-infra-github-scm:
902 url: '{git-clone-url}{github-org}/{project}'
904 branch: 'refs/heads/{branch}'
905 submodule-recursive: '{submodule-recursive}'
906 choosing-strategy: default
907 jenkins-ssh-credential: '{jenkins-ssh-credential}'
915 - github-pull-request:
916 trigger-phrase: '^remerge$'
917 only-trigger-phrase: true
918 status-context: 'Packer {platforms}-{templates} Merge'
923 white-list: '{obj:github_pr_whitelist}'
924 admin-list: '{obj:github_pr_admin_list}'
925 # included-regions MUST match Gerrit Trigger file-paths
927 - 'packer\/provision\/.*\.sh'
928 - 'packer\/provision\/{templates}\.yaml'
929 - 'packer\/provision\/local-{templates}\.yaml'
930 - 'packer\/templates\/{templates}\.json'
931 - 'packer\/vars\/{platforms}\.json'
937 - lf_packer_verify: &lf_packer_verify
938 name: lf-packer-verify
940 ######################
941 # Default parameters #
942 ######################
946 gerrit_verify_triggers:
947 - patchset-created-event:
949 exclude-trivial-rebase: false
950 exclude-no-code-change: false
951 - draft-published-event
952 - comment-added-contains-event:
953 comment-contains-value: recheck$
955 gerrit_trigger_file_paths:
956 - compare-type: REG_EXP
957 pattern: 'packer\/.*'
959 # github_included_regions MUST match gerrit_trigger_file_paths
960 github_included_regions:
963 #####################
964 # Job Configuration #
965 #####################
970 - lf-infra-packer-validate:
971 packer-cloud-settings: '{packer-cloud-settings}'
972 packer-version: '{packer-version}'
975 name: '{project-name}-packer-verify'
976 id: gerrit-packer-verify
977 <<: *lf_packer_common
978 # yamllint disable-line rule:key-duplicates
979 <<: *lf_packer_verify
981 ######################
982 # Default parameters #
983 ######################
985 git-url: '$GIT_URL/$GERRIT_PROJECT'
987 #####################
988 # Job Configuration #
989 #####################
992 - lf-infra-gerrit-scm:
994 refspec: '$GERRIT_REFSPEC'
995 branch: '$GERRIT_BRANCH'
996 submodule-recursive: '{submodule-recursive}'
997 choosing-strategy: gerrit
998 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1002 server-name: '{gerrit-server-name}'
1003 trigger-on: '{obj:gerrit_verify_triggers}'
1005 - project-compare-type: ANT
1006 project-pattern: '{project}'
1008 - branch-compare-type: ANT
1009 branch-pattern: '**/{branch}'
1010 file-paths: '{obj:gerrit_trigger_file_paths}'
1013 name: '{project-name}-packer-verify'
1014 id: github-packer-verify
1015 <<: *lf_packer_common
1016 # yamllint disable-line rule:key-duplicates
1017 <<: *lf_packer_verify
1019 #####################
1020 # Job Configuration #
1021 #####################
1025 url: '{git-url}/{github-org}/{project}'
1028 - lf-infra-github-scm:
1029 url: '{git-clone-url}{github-org}/{project}'
1030 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1032 submodule-recursive: '{submodule-recursive}'
1033 choosing-strategy: default
1034 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1037 - github-pull-request:
1038 trigger-phrase: '^recheck$'
1039 only-trigger-phrase: false
1040 status-context: 'Packer Verify'
1043 included-regions: '{obj:github_included_regions}'