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 ######################
68 submodule-recursive: true
69 packer-cloud-settings: packer-cloud-env
76 project-type: freestyle
80 - lf-infra-properties:
85 - lf-infra-parameters:
89 lftools-version: '{lftools-version}'
90 - lf-packer-parameters:
91 packer-version: '{packer-version}'
95 build-timeout: '{build-timeout}'
96 jenkins-ssh-credential: '{jenkins-ssh-credential}'
102 name: lf-infra-jjb-parameters
106 default: '{jjb-version}'
107 description: Jenkins Job Builder version to download and install.
110 name: lf-packer-parameters
114 default: '{packer-version}'
115 description: Packer version to download and install.
117 - lf_jjb_common: &lf_jjb_common
120 ######################
121 # Default parameters #
122 ######################
128 submodule-recursive: true
130 gerrit_trigger_file_paths:
131 - compare-type: REG_EXP
132 pattern: '.*\.groovy'
133 - compare-type: REG_EXP
135 - compare-type: REG_EXP
136 pattern: '.*\.(yaml|yml)'
137 - compare-type: REG_EXP
138 pattern: '.*\/global-jjb'
140 # github_included_regions MUST match gerrit_trigger_file_paths
141 github_included_regions:
147 #####################
148 # Job Configuration #
149 #####################
151 project-type: freestyle
155 - lf-infra-properties:
157 build-days-to-keep: 7
160 - lf-infra-parameters:
164 lftools-version: '{lftools-version}'
165 - lf-infra-jjb-parameters:
166 jjb-version: '{jjb-version}'
170 build-timeout: '{build-timeout}'
171 jenkins-ssh-credential: '{jenkins-ssh-credential}'
176 ######################
177 # Gerrit Branch Lock #
178 ######################
181 name: '{project-name}-gerrit-branch-lock-{stream}'
182 id: gerrit-branch-lock
184 ######################
185 # Default parameters #
186 ######################
189 git-url: '$GIT_URL/$GERRIT_PROJECT'
191 gerrit_merge_triggers:
192 - comment-added-contains-event:
193 comment-contains-value: (un)?lock branch$
195 #####################
196 # Job Configuration #
197 #####################
199 project-type: freestyle
203 - lf-infra-properties:
205 build-days-to-keep: 1
208 - lf-infra-parameters:
212 lftools-version: '{lftools-version}'
217 jenkins-ssh-credential: '{jenkins-ssh-credential}'
220 - lf-infra-gerrit-scm:
224 submodule-recursive: false
225 choosing-strategy: default
226 jenkins-ssh-credential: '{jenkins-ssh-credential}'
230 server-name: '{gerrit-server-name}'
231 trigger-on: '{obj:gerrit_merge_triggers}'
233 - project-compare-type: ANT
234 project-pattern: '{project}'
236 - branch-compare-type: ANT
237 branch-pattern: '**/{branch}'
240 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
246 ##########################################
247 # Jenkins Configuration Management Merge #
248 ##########################################
251 name: lf-jenkins-cfg-clouds
255 properties-content: 'jenkins_silos={jenkins-silos}'
256 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
257 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
260 name: lf-jenkins-cfg-global-vars
264 properties-content: 'jenkins_silos={jenkins-silos}'
265 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
266 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
268 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
269 name: lf-jenkins-cfg-merge
271 ######################
272 # Default parameters #
273 ######################
277 git-url: '$GIT_URL/$GERRIT_PROJECT'
278 jenkins-silos: production sandbox
280 gerrit_merge_triggers:
281 - change-merged-event
282 - comment-added-contains-event:
283 comment-contains-value: remerge$
285 gerrit_trigger_file_paths:
286 - compare-type: REG_EXP
287 pattern: 'jenkins-config\/.*'
289 # github_included_regions MUST match gerrit_trigger_file_paths
290 github_included_regions:
291 - 'jenkins-config\/.*'
293 #####################
294 # Job Configuration #
295 #####################
297 project-type: freestyle
302 - lf-infra-properties:
304 build-days-to-keep: 1
307 - lf-infra-parameters:
311 lftools-version: '{lftools-version}'
316 jenkins-ssh-credential: '{jenkins-ssh-credential}'
319 - shell: !include-raw-escape:
320 - ../shell/lftools-install.sh
321 - lf-jenkins-cfg-global-vars:
322 jenkins-silos: '{jenkins-silos}'
323 - lf-jenkins-cfg-clouds:
324 jenkins-silos: '{jenkins-silos}'
330 name: '{project-name}-jenkins-cfg-merge'
331 id: gerrit-jenkins-cfg-merge
332 <<: *lf_jenkins_cfg_merge
335 - lf-infra-gerrit-scm:
337 refspec: 'refs/heads/{branch}'
339 submodule-recursive: true
340 choosing-strategy: default
341 jenkins-ssh-credential: '{jenkins-ssh-credential}'
344 - timed: '{obj:cron}'
346 server-name: '{gerrit-server-name}'
347 trigger-on: '{obj:gerrit_merge_triggers}'
349 - project-compare-type: ANT
350 project-pattern: '{project}'
352 - branch-compare-type: ANT
353 branch-pattern: '**/{branch}'
354 file-paths: '{obj:gerrit_trigger_file_paths}'
357 name: '{project-name}-jenkins-cfg-merge'
358 id: github-jenkins-cfg-merge
359 <<: *lf_jenkins_cfg_merge
363 url: '{git-url}/{github-org}/{project}'
366 - lf-infra-github-scm:
367 url: '{git-clone-url}{github-org}/{project}'
369 branch: 'refs/heads/{branch}'
370 submodule-recursive: true
371 choosing-strategy: default
372 jenkins-ssh-credential: '{jenkins-ssh-credential}'
375 - timed: '{obj:cron}'
379 - github-pull-request:
380 trigger-phrase: '^remerge$'
381 only-trigger-phrase: true
382 status-context: 'Jenkins CFG Merge'
387 white-list: '{obj:github_pr_whitelist}'
388 admin-list: '{obj:github_pr_admin_list}'
389 included-regions: '{obj:github_included_regions}'
395 - lf_jjb_deploy_job: &lf_jjb_deploy_job
396 name: lf-jjb-deploy-job
398 ######################
399 # Default parameters #
400 ######################
403 git-url: '$GIT_URL/$GERRIT_PROJECT'
405 gerrit_jjb_deploy_job_triggers:
406 - comment-added-contains-event:
407 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
409 #####################
410 # Job Configuration #
411 #####################
413 project-type: freestyle
418 - lf-infra-properties:
420 build-days-to-keep: 1
423 - lf-infra-parameters:
427 lftools-version: '{lftools-version}'
432 jenkins-ssh-credential: '{jenkins-ssh-credential}'
436 pip-packages: jenkins-job-builder
437 - lf-infra-jjbini-sandbox
438 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
444 name: '{project-name}-jjb-deploy-job'
445 id: gerrit-jjb-deploy-job
446 <<: *lf_jjb_deploy_job
449 - lf-infra-gerrit-scm:
451 refspec: 'refs/heads/{branch}'
453 submodule-recursive: true
454 choosing-strategy: default
455 jenkins-ssh-credential: '{jenkins-ssh-credential}'
459 server-name: '{gerrit-server-name}'
460 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
462 - project-compare-type: ANT
463 project-pattern: '**'
465 - branch-compare-type: ANT
474 name: '{project-name}-jjb-deploy-job'
475 id: github-jjb-deploy-job
476 <<: *lf_jjb_deploy_job
480 url: '{git-url}/{github-org}/{project}'
483 - lf-infra-github-scm:
484 url: '{git-clone-url}{github-org}/{project}'
485 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
487 submodule-recursive: true
488 choosing-strategy: default
489 jenkins-ssh-credential: '{jenkins-ssh-credential}'
492 - github-pull-request:
493 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
494 only-trigger-phrase: true
495 status-context: 'JJB Deploy Job'
503 - lf_jjb_merge: &lf_jjb_merge
506 ######################
507 # Default parameters #
508 ######################
510 gerrit_merge_triggers:
511 - change-merged-event
512 - comment-added-contains-event:
513 comment-contains-value: remerge$
515 #####################
516 # Job Configuration #
517 #####################
521 - shell: !include-raw-escape:
522 - ../shell/jjb-install.sh
523 - ../shell/jjb-merge-job.sh
524 - ../shell/jjb-cleanup.sh
527 name: '{project-name}-jjb-merge'
530 # yamllint disable-line rule:key-duplicates
533 git-url: '$GIT_URL/$GERRIT_PROJECT'
536 - lf-infra-gerrit-scm:
540 submodule-recursive: '{submodule-recursive}'
541 choosing-strategy: default
542 jenkins-ssh-credential: '{jenkins-ssh-credential}'
546 server-name: '{gerrit-server-name}'
547 trigger-on: '{obj:gerrit_merge_triggers}'
549 - project-compare-type: ANT
550 project-pattern: '{project}'
552 - branch-compare-type: ANT
553 branch-pattern: '**/{branch}'
554 file-paths: '{obj:gerrit_trigger_file_paths}'
557 name: '{project-name}-jjb-merge'
560 # yamllint disable-line rule:key-duplicates
563 #####################
564 # Job Configuration #
565 #####################
569 url: '{git-url}/{github-org}/{project}'
572 - lf-infra-github-scm:
573 url: '{git-clone-url}{github-org}/{project}'
575 branch: 'refs/heads/{branch}'
576 submodule-recursive: '{submodule-recursive}'
577 choosing-strategy: default
578 jenkins-ssh-credential: '{jenkins-ssh-credential}'
584 - github-pull-request:
585 trigger-phrase: '^remerge$'
586 only-trigger-phrase: true
587 status-context: 'JJB Merge'
592 white-list: '{obj:github_pr_whitelist}'
593 admin-list: '{obj:github_pr_admin_list}'
594 included-regions: '{obj:github_included_regions}'
600 - lf_jjb_verify: &lf_jjb_verify
603 ######################
604 # Default parameters #
605 ######################
607 gerrit_verify_triggers:
608 - patchset-created-event:
610 exclude-trivial-rebase: false
611 exclude-no-code-change: false
612 - draft-published-event
613 - comment-added-contains-event:
614 comment-contains-value: recheck$
616 #####################
617 # Job Configuration #
618 #####################
624 - shell: !include-raw-escape:
625 - ../shell/git-validate-jira-urls.sh
626 - ../shell/jjb-install.sh
627 - ../shell/jjb-verify-job.sh
628 - ../shell/jjb-check-unicode.sh
629 - ../shell/jjb-cleanup.sh
630 - lf-infra-gpg-verify-git-signature
633 name: '{project-name}-jjb-verify'
634 id: gerrit-jjb-verify
636 # yamllint disable-line rule:key-duplicates
639 ######################
640 # Default parameters #
641 ######################
643 git-url: '$GIT_URL/$GERRIT_PROJECT'
645 #####################
646 # Job Configuration #
647 #####################
650 - lf-infra-gerrit-scm:
652 refspec: '$GERRIT_REFSPEC'
653 branch: '$GERRIT_BRANCH'
654 submodule-recursive: '{submodule-recursive}'
655 choosing-strategy: gerrit
656 jenkins-ssh-credential: '{jenkins-ssh-credential}'
660 server-name: '{gerrit-server-name}'
661 trigger-on: '{obj:gerrit_verify_triggers}'
663 - project-compare-type: ANT
664 project-pattern: '{project}'
666 - branch-compare-type: ANT
667 branch-pattern: '**/{branch}'
668 file-paths: '{obj:gerrit_trigger_file_paths}'
671 name: '{project-name}-jjb-verify'
672 id: github-jjb-verify
674 # yamllint disable-line rule:key-duplicates
677 #####################
678 # Job Configuration #
679 #####################
683 url: '{git-url}/{github-org}/{project}'
686 - lf-infra-github-scm:
687 url: '{git-clone-url}{github-org}/{project}'
688 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
690 submodule-recursive: '{submodule-recursive}'
691 choosing-strategy: default
692 jenkins-ssh-credential: '{jenkins-ssh-credential}'
695 - github-pull-request:
696 trigger-phrase: '^recheck$'
697 only-trigger-phrase: false
698 status-context: 'JJB Verify'
701 included-regions: '{obj:github_included_regions}'
707 - lf_packer_merge: &lf_packer_merge
708 name: lf-packer-merge
710 #####################
711 # Job Configuration #
712 #####################
715 - lf-infra-packer-validate:
716 packer-cloud-settings: '{packer-cloud-settings}'
717 packer-version: '{packer-version}'
718 - lf-infra-packer-build:
719 packer-cloud-settings: '{packer-cloud-settings}'
720 packer-version: '{packer-version}'
721 platform: '{platforms}'
722 template: '{templates}'
725 name: '{project-name}-packer-merge-{platforms}-{templates}'
726 id: gerrit-packer-merge
727 <<: *lf_packer_common
728 # yamllint disable-line rule:key-duplicates
731 ######################
732 # Default parameters #
733 ######################
735 git-url: '$GIT_URL/$GERRIT_PROJECT'
737 gerrit_merge_triggers:
738 - change-merged-event
739 - comment-added-contains-event:
740 comment-contains-value: remerge$
742 #####################
743 # Job Configuration #
744 #####################
747 - lf-infra-gerrit-scm:
749 refspec: '$GERRIT_REFSPEC'
750 branch: '$GERRIT_BRANCH'
751 submodule-recursive: '{submodule-recursive}'
752 choosing-strategy: gerrit
753 jenkins-ssh-credential: '{jenkins-ssh-credential}'
758 server-name: '{gerrit-server-name}'
759 trigger-on: '{obj:gerrit_merge_triggers}'
761 - project-compare-type: ANT
762 project-pattern: '{project}'
764 - branch-compare-type: ANT
765 branch-pattern: '**/{branch}'
767 - compare-type: REG_EXP
768 pattern: 'packer\/provision\/.*\.sh'
769 - compare-type: REG_EXP
770 pattern: 'packer\/provision\/{templates}\.yaml'
771 - compare-type: REG_EXP
772 pattern: 'packer\/provision\/local-{templates}\.yaml'
773 - compare-type: REG_EXP
774 pattern: 'packer\/templates\/{templates}\.json'
775 - compare-type: REG_EXP
776 pattern: 'packer\/vars\/{platforms}\.json'
779 name: '{project-name}-packer-merge-{platforms}-{templates}'
780 id: github-packer-merge
781 <<: *lf_packer_common
782 # yamllint disable-line rule:key-duplicates
785 #####################
786 # Job Configuration #
787 #####################
791 url: '{git-url}/{github-org}/{project}'
794 - lf-infra-github-scm:
795 url: '{git-clone-url}{github-org}/{project}'
797 branch: 'refs/heads/{branch}'
798 submodule-recursive: '{submodule-recursive}'
799 choosing-strategy: default
800 jenkins-ssh-credential: '{jenkins-ssh-credential}'
808 - github-pull-request:
809 trigger-phrase: '^remerge$'
810 only-trigger-phrase: true
811 status-context: 'Packer {platforms}-{templates} Merge'
816 white-list: '{obj:github_pr_whitelist}'
817 admin-list: '{obj:github_pr_admin_list}'
818 # included-regions MUST match Gerrit Trigger file-paths
820 - 'packer\/provision\/.*\.sh'
821 - 'packer\/provision\/{templates}\.yaml'
822 - 'packer\/provision\/local-{templates}\.yaml'
823 - 'packer\/templates\/{templates}\.json'
824 - 'packer\/vars\/{platforms}\.json'
830 - lf_packer_verify: &lf_packer_verify
831 name: lf-packer-verify
833 ######################
834 # Default parameters #
835 ######################
839 gerrit_verify_triggers:
840 - patchset-created-event:
842 exclude-trivial-rebase: false
843 exclude-no-code-change: false
844 - draft-published-event
845 - comment-added-contains-event:
846 comment-contains-value: recheck$
848 gerrit_trigger_file_paths:
849 - compare-type: REG_EXP
850 pattern: 'packer\/.*'
852 # github_included_regions MUST match gerrit_trigger_file_paths
853 github_included_regions:
856 #####################
857 # Job Configuration #
858 #####################
863 - lf-infra-packer-validate:
864 packer-cloud-settings: '{packer-cloud-settings}'
865 packer-version: '{packer-version}'
868 name: '{project-name}-packer-verify'
869 id: gerrit-packer-verify
870 <<: *lf_packer_common
871 # yamllint disable-line rule:key-duplicates
872 <<: *lf_packer_verify
874 ######################
875 # Default parameters #
876 ######################
878 git-url: '$GIT_URL/$GERRIT_PROJECT'
880 #####################
881 # Job Configuration #
882 #####################
885 - lf-infra-gerrit-scm:
887 refspec: '$GERRIT_REFSPEC'
888 branch: '$GERRIT_BRANCH'
889 submodule-recursive: '{submodule-recursive}'
890 choosing-strategy: gerrit
891 jenkins-ssh-credential: '{jenkins-ssh-credential}'
895 server-name: '{gerrit-server-name}'
896 trigger-on: '{obj:gerrit_verify_triggers}'
898 - project-compare-type: ANT
899 project-pattern: '{project}'
901 - branch-compare-type: ANT
902 branch-pattern: '**/{branch}'
903 file-paths: '{obj:gerrit_trigger_file_paths}'
906 name: '{project-name}-packer-verify'
907 id: github-packer-verify
908 <<: *lf_packer_common
909 # yamllint disable-line rule:key-duplicates
910 <<: *lf_packer_verify
912 #####################
913 # Job Configuration #
914 #####################
918 url: '{git-url}/{github-org}/{project}'
921 - lf-infra-github-scm:
922 url: '{git-clone-url}{github-org}/{project}'
923 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
925 submodule-recursive: '{submodule-recursive}'
926 choosing-strategy: default
927 jenkins-ssh-credential: '{jenkins-ssh-credential}'
930 - github-pull-request:
931 trigger-phrase: '^recheck$'
932 only-trigger-phrase: false
933 status-context: 'Packer Verify'
936 included-regions: '{obj:github_included_regions}'