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'
27 - gerrit-packer-verify
31 name: '{project-name}-github-packer-jobs'
37 - github-packer-verify
46 - config-file-provider:
49 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
52 name: lf-infra-jjbini-sandbox
53 # TODO: Consolidate this into jjbini when JJB2.0 is available.
55 - config-file-provider:
57 - file-id: jjbini-sandbox
58 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
60 - lf_packer_file_paths: &lf_packer_file_paths
61 name: lf-packer-file-paths
64 pattern: 'packer/vars/{platforms}.json'
66 pattern: 'packer/templates/{templates}.json'
68 pattern: 'packer/provision/*.sh'
70 pattern: 'packer/provision/{templates}.yaml'
72 pattern: 'packer/provision/local-{templates}.yaml'
74 pattern: 'packer/provision/lib/**'
76 - lf_packer: &lf_packer_common
77 name: lf-packer-common
78 # Provide configuration common in packer jobs.
80 ######################
81 # Default parameters #
82 ######################
87 submodule-recursive: true
88 packer-cloud-settings: packer-cloud-env
94 project-type: freestyle
98 - lf-infra-properties:
100 build-days-to-keep: 7
103 - lf-infra-parameters:
107 lftools-version: '{lftools-version}'
108 - lf-infra-packer-parameters:
109 packer-version: '{packer-version}'
113 build-timeout: '{build-timeout}'
114 jenkins-ssh-credential: '{jenkins-ssh-credential}'
120 name: lf-infra-jjb-parameters
124 default: '{jjb-version}'
125 description: Jenkins Job Builder version to download and install.
128 name: lf-infra-packer-parameters
132 default: '{packer-version}'
133 description: Packer version to download and install.
135 - lf_jjb_common: &lf_jjb_common
138 ######################
139 # Default parameters #
140 ######################
146 submodule-recursive: true
148 gerrit_trigger_file_paths:
154 pattern: '**/global-jjb'
156 #####################
157 # Job Configuration #
158 #####################
160 project-type: freestyle
164 - lf-infra-properties:
166 build-days-to-keep: 7
169 - lf-infra-parameters:
173 lftools-version: '{lftools-version}'
174 - lf-infra-jjb-parameters:
175 jjb-version: '{jjb-version}'
179 build-timeout: '{build-timeout}'
180 jenkins-ssh-credential: '{jenkins-ssh-credential}'
185 ######################
186 # Gerrit Branch Lock #
187 ######################
190 name: '{project-name}-gerrit-branch-lock-{stream}'
191 id: gerrit-branch-lock
193 ######################
194 # Default parameters #
195 ######################
198 git-url: '$GIT_URL/$GERRIT_PROJECT'
200 gerrit_merge_triggers:
201 - comment-added-contains-event:
202 comment-contains-value: (un)?lock branch$
204 #####################
205 # Job Configuration #
206 #####################
208 project-type: freestyle
212 - lf-infra-properties:
214 build-days-to-keep: 1
217 - lf-infra-parameters:
221 lftools-version: '{lftools-version}'
226 jenkins-ssh-credential: '{jenkins-ssh-credential}'
229 - lf-infra-gerrit-scm:
233 submodule-recursive: false
234 choosing-strategy: default
235 jenkins-ssh-credential: '{jenkins-ssh-credential}'
239 server-name: '{gerrit-server-name}'
240 trigger-on: '{obj:gerrit_merge_triggers}'
242 - project-compare-type: ANT
243 project-pattern: '{project}'
245 - branch-compare-type: ANT
246 branch-pattern: '**/{branch}'
249 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
255 ##########################################
256 # Jenkins Configuration Management Merge #
257 ##########################################
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 ######################
276 git-url: '$GIT_URL/$GERRIT_PROJECT'
277 jenkins-silos: production sandbox
279 #####################
280 # Job Configuration #
281 #####################
283 project-type: freestyle
288 - lf-infra-properties:
290 build-days-to-keep: 1
293 - lf-infra-parameters:
297 lftools-version: '{lftools-version}'
302 jenkins-ssh-credential: '{jenkins-ssh-credential}'
305 - shell: !include-raw-escape:
306 - ../shell/lftools-install.sh
307 - lf-jenkins-cfg-global-vars:
308 jenkins-silos: '{jenkins-silos}'
314 name: '{project-name}-jenkins-cfg-merge'
315 id: gerrit-jenkins-cfg-merge
316 <<: *lf_jenkins_cfg_merge
319 - lf-infra-gerrit-scm:
321 refspec: 'refs/heads/{branch}'
323 submodule-recursive: true
324 choosing-strategy: default
325 jenkins-ssh-credential: '{jenkins-ssh-credential}'
328 name: '{project-name}-jenkins-cfg-merge'
329 id: github-jenkins-cfg-merge
330 <<: *lf_jenkins_cfg_merge
334 url: '{git-url}/{github-org}/{project}'
337 - lf-infra-github-scm:
338 url: '{git-clone-url}{github-org}/{project}'
339 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
341 submodule-recursive: true
342 choosing-strategy: default
343 jenkins-ssh-credential: '{jenkins-ssh-credential}'
350 - lf_jjb_deploy_job: &lf_jjb_deploy_job
351 name: lf-jjb-deploy-job
353 ######################
354 # Default parameters #
355 ######################
358 git-url: '$GIT_URL/$GERRIT_PROJECT'
360 gerrit_jjb_deploy_job_triggers:
361 - comment-added-contains-event:
362 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
364 #####################
365 # Job Configuration #
366 #####################
368 project-type: freestyle
373 - lf-infra-properties:
375 build-days-to-keep: 1
378 - lf-infra-parameters:
382 lftools-version: '{lftools-version}'
387 jenkins-ssh-credential: '{jenkins-ssh-credential}'
391 pip-packages: jenkins-job-builder
392 - lf-infra-jjbini-sandbox
393 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
399 name: '{project-name}-jjb-deploy-job'
400 id: gerrit-jjb-deploy-job
401 <<: *lf_jjb_deploy_job
404 - lf-infra-gerrit-scm:
406 refspec: 'refs/heads/{branch}'
408 submodule-recursive: true
409 choosing-strategy: default
410 jenkins-ssh-credential: '{jenkins-ssh-credential}'
414 server-name: '{gerrit-server-name}'
415 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
417 - project-compare-type: ANT
418 project-pattern: '{project}'
420 - branch-compare-type: ANT
421 branch-pattern: '**/{branch}'
424 name: '{project-name}-jjb-deploy-job'
425 id: github-jjb-deploy-job
426 <<: *lf_jjb_deploy_job
430 url: '{git-url}/{github-org}/{project}'
433 - lf-infra-github-scm:
434 url: '{git-clone-url}{github-org}/{project}'
435 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
437 submodule-recursive: true
438 choosing-strategy: default
439 jenkins-ssh-credential: '{jenkins-ssh-credential}'
442 - lf-infra-github-pr-trigger:
443 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
444 only-trigger-phrase: true
445 status-context: 'JJB Deploy Job'
451 github_pr_admin_list:
458 - lf_jjb_merge: &lf_jjb_merge
461 ######################
462 # Default parameters #
463 ######################
465 gerrit_merge_triggers:
466 - change-merged-event
467 - comment-added-contains-event:
468 comment-contains-value: remerge$
470 #####################
471 # Job Configuration #
472 #####################
476 - shell: !include-raw-escape:
477 - ../shell/jjb-install.sh
478 - ../shell/jjb-merge-job.sh
481 name: '{project-name}-jjb-merge'
484 # yamllint disable-line rule:key-duplicates
487 git-url: '$GIT_URL/$GERRIT_PROJECT'
490 - lf-infra-gerrit-scm:
494 submodule-recursive: '{submodule-recursive}'
495 choosing-strategy: default
496 jenkins-ssh-credential: '{jenkins-ssh-credential}'
500 server-name: '{gerrit-server-name}'
501 trigger-on: '{obj:gerrit_merge_triggers}'
503 - project-compare-type: ANT
504 project-pattern: '{project}'
506 - branch-compare-type: ANT
507 branch-pattern: '**/{branch}'
508 file-paths: '{obj:gerrit_trigger_file_paths}'
511 name: '{project-name}-jjb-merge'
514 # yamllint disable-line rule:key-duplicates
519 url: '{git-url}/{github-org}/{project}'
522 - lf-infra-github-scm:
523 url: '{git-clone-url}{github-org}/{project}'
525 branch: 'refs/heads/{branch}'
526 submodule-recursive: '{submodule-recursive}'
527 choosing-strategy: default
528 jenkins-ssh-credential: '{jenkins-ssh-credential}'
534 - lf-infra-github-pr-trigger:
535 trigger-phrase: '^remerge$'
536 only-trigger-phrase: true
537 status-context: 'JJB Merge'
540 github-org: '{github-org}'
541 github_pr_whitelist: '{obj:github_pr_whitelist}'
542 github_pr_admin_list: '{obj:github_pr_admin_list}'
548 - lf_jjb_verify: &lf_jjb_verify
551 ######################
552 # Default parameters #
553 ######################
555 gerrit_verify_triggers:
556 - patchset-created-event:
558 exclude-trivial-rebase: false
559 exclude-no-code-change: false
560 - draft-published-event
561 - comment-added-contains-event:
562 comment-contains-value: recheck$
564 #####################
565 # Job Configuration #
566 #####################
572 - shell: !include-raw-escape:
573 - ../shell/git-validate-jira-urls.sh
574 - ../shell/jjb-install.sh
575 - ../shell/jjb-verify-job.sh
576 - ../shell/jjb-check-unicode.sh
577 - lf-infra-gpg-verify-git-signature
580 name: '{project-name}-jjb-verify'
581 id: gerrit-jjb-verify
583 # yamllint disable-line rule:key-duplicates
586 git-url: '$GIT_URL/$GERRIT_PROJECT'
589 - lf-infra-gerrit-scm:
591 refspec: '$GERRIT_REFSPEC'
592 branch: '$GERRIT_BRANCH'
593 submodule-recursive: '{submodule-recursive}'
594 choosing-strategy: gerrit
595 jenkins-ssh-credential: '{jenkins-ssh-credential}'
599 server-name: '{gerrit-server-name}'
600 trigger-on: '{obj:gerrit_verify_triggers}'
602 - project-compare-type: ANT
603 project-pattern: '{project}'
605 - branch-compare-type: ANT
606 branch-pattern: '**/{branch}'
607 file-paths: '{obj:gerrit_trigger_file_paths}'
610 name: '{project-name}-jjb-verify'
611 id: github-jjb-verify
613 # yamllint disable-line rule:key-duplicates
618 url: '{git-url}/{github-org}/{project}'
621 - lf-infra-github-scm:
622 url: '{git-clone-url}{github-org}/{project}'
623 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
625 submodule-recursive: '{submodule-recursive}'
626 choosing-strategy: default
627 jenkins-ssh-credential: '{jenkins-ssh-credential}'
630 - lf-infra-github-pr-trigger:
631 trigger-phrase: '^recheck$'
632 only-trigger-phrase: false
633 status-context: 'JJB Verify'
639 github_pr_admin_list:
646 - lf_packer_merge: &lf_packer_merge
647 name: lf-packer-merge
649 ######################
650 # Default parameters #
651 ######################
653 gerrit_merge_triggers:
654 - change-merged-event
655 - comment-added-contains-event:
656 comment-contains-value: remerge$
658 #####################
659 # Job Configuration #
660 #####################
663 - lf-infra-packer-validate:
664 packer-cloud-settings: '{packer-cloud-settings}'
665 packer-version: '{packer-version}'
666 - lf-infra-packer-build:
667 packer-cloud-settings: '{packer-cloud-settings}'
668 packer-version: '{packer-version}'
669 platform: '{platforms}'
670 template: '{templates}'
673 name: '{project-name}-packer-merge-{platforms}-{templates}'
674 id: gerrit-packer-merge
675 <<: *lf_packer_common
676 # yamllint disable-line rule:key-duplicates
679 git-url: '$GIT_URL/$GERRIT_PROJECT'
682 - lf-infra-gerrit-scm:
684 refspec: '$GERRIT_REFSPEC'
685 branch: '$GERRIT_BRANCH'
686 submodule-recursive: '{submodule-recursive}'
687 choosing-strategy: gerrit
688 jenkins-ssh-credential: '{jenkins-ssh-credential}'
691 - timed: '00 10 1 * *'
693 server-name: '{gerrit-server-name}'
694 trigger-on: '{obj:gerrit_merge_triggers}'
696 - project-compare-type: ANT
697 project-pattern: '{project}'
699 - branch-compare-type: ANT
700 branch-pattern: '**/{branch}'
701 <<: *lf_packer_file_paths
704 name: '{project-name}-packer-merge-{platforms}-{templates}'
705 id: github-packer-merge
706 <<: *lf_packer_common
707 # yamllint disable-line rule:key-duplicates
712 url: '{git-url}/{github-org}/{project}'
715 - lf-infra-github-scm:
716 url: '{git-clone-url}{github-org}/{project}'
718 branch: 'refs/heads/{branch}'
719 submodule-recursive: '{submodule-recursive}'
720 choosing-strategy: default
721 jenkins-ssh-credential: '{jenkins-ssh-credential}'
724 - timed: '00 10 1 * *'
728 - lf-infra-github-pr-trigger:
729 trigger-phrase: '^remerge$'
730 only-trigger-phrase: true
731 status-context: 'Packer {platforms}-${templates} Merge'
734 github-org: '{github-org}'
735 github_pr_whitelist: '{obj:github_pr_whitelist}'
736 github_pr_admin_list: '{obj:github_pr_admin_list}'
742 - lf_packer_verify: &lf_packer_verify
743 name: lf-packer-verify
745 ######################
746 # Default parameters #
747 ######################
751 gerrit_verify_triggers:
752 - patchset-created-event:
754 exclude-trivial-rebase: false
755 exclude-no-code-change: false
756 - draft-published-event
757 - comment-added-contains-event:
758 comment-contains-value: recheck$
760 gerrit_trigger_file_paths:
762 pattern: 'packer/vars/**.json'
764 pattern: 'packer/templates/**.json'
766 pattern: 'packer/provision/**.sh'
768 pattern: 'packer/provision/lib/**'
770 #####################
771 # Job Configuration #
772 #####################
777 - lf-infra-packer-validate:
778 packer-cloud-settings: '{packer-cloud-settings}'
779 packer-version: '{packer-version}'
782 name: '{project-name}-packer-verify'
783 id: gerrit-packer-verify
784 <<: *lf_packer_common
785 # yamllint disable-line rule:key-duplicates
786 <<: *lf_packer_verify
788 git-url: '$GIT_URL/$GERRIT_PROJECT'
791 - lf-infra-gerrit-scm:
793 refspec: '$GERRIT_REFSPEC'
794 branch: '$GERRIT_BRANCH'
795 submodule-recursive: '{submodule-recursive}'
796 choosing-strategy: gerrit
797 jenkins-ssh-credential: '{jenkins-ssh-credential}'
801 server-name: '{gerrit-server-name}'
802 trigger-on: '{obj:gerrit_verify_triggers}'
804 - project-compare-type: ANT
805 project-pattern: '{project}'
807 - branch-compare-type: ANT
808 branch-pattern: '**/{branch}'
809 file-paths: '{obj:gerrit_trigger_file_paths}'
812 name: '{project-name}-packer-verify'
813 id: github-packer-verify
814 <<: *lf_packer_common
815 # yamllint disable-line rule:key-duplicates
816 <<: *lf_packer_verify
820 url: '{git-url}/{github-org}/{project}'
823 - lf-infra-github-scm:
824 url: '{git-clone-url}{github-org}/{project}'
825 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
827 submodule-recursive: '{submodule-recursive}'
828 choosing-strategy: default
829 jenkins-ssh-credential: '{jenkins-ssh-credential}'
832 - lf-infra-github-pr-trigger:
833 trigger-phrase: '^recheck$'
834 only-trigger-phrase: false
835 status-context: 'Packer Verify'
841 github_pr_admin_list: