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/lib/**'
74 - lf_packer: &lf_packer_common
75 name: lf-packer-common
76 # Provide configuration common in packer jobs.
78 ######################
79 # Default parameters #
80 ######################
85 submodule-recursive: true
86 packer-cloud-settings: packer-cloud-env
92 project-type: freestyle
96 - lf-infra-properties:
101 - lf-infra-parameters:
105 lftools-version: '{lftools-version}'
106 - lf-infra-packer-parameters:
107 packer-version: '{packer-version}'
111 build-timeout: '{build-timeout}'
112 jenkins-ssh-credential: '{jenkins-ssh-credential}'
118 name: lf-infra-jjb-parameters
122 default: '{jjb-version}'
123 description: Jenkins Job Builder version to download and install.
126 name: lf-infra-packer-parameters
130 default: '{packer-version}'
131 description: Packer version to download and install.
133 - lf_jjb_common: &lf_jjb_common
136 ######################
137 # Default parameters #
138 ######################
144 submodule-recursive: true
146 gerrit_trigger_file_paths:
152 pattern: '**/global-jjb'
154 #####################
155 # Job Configuration #
156 #####################
158 project-type: freestyle
162 - lf-infra-properties:
164 build-days-to-keep: 7
167 - lf-infra-parameters:
171 lftools-version: '{lftools-version}'
172 - lf-infra-jjb-parameters:
173 jjb-version: '{jjb-version}'
177 build-timeout: '{build-timeout}'
178 jenkins-ssh-credential: '{jenkins-ssh-credential}'
183 ######################
184 # Gerrit Branch Lock #
185 ######################
188 name: '{project-name}-gerrit-branch-lock-{stream}'
189 id: gerrit-branch-lock
191 ######################
192 # Default parameters #
193 ######################
196 git-url: '$GIT_URL/$GERRIT_PROJECT'
198 gerrit_merge_triggers:
199 - comment-added-contains-event:
200 comment-contains-value: (un)?lock branch$
202 #####################
203 # Job Configuration #
204 #####################
206 project-type: freestyle
210 - lf-infra-properties:
212 build-days-to-keep: 1
215 - lf-infra-parameters:
219 lftools-version: '{lftools-version}'
224 jenkins-ssh-credential: '{jenkins-ssh-credential}'
227 - lf-infra-gerrit-scm:
231 submodule-recursive: false
232 choosing-strategy: default
233 jenkins-ssh-credential: '{jenkins-ssh-credential}'
237 server-name: '{gerrit-server-name}'
238 trigger-on: '{obj:gerrit_merge_triggers}'
240 - project-compare-type: ANT
241 project-pattern: '{project}'
243 - branch-compare-type: ANT
244 branch-pattern: '**/{branch}'
247 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
253 ##########################################
254 # Jenkins Configuration Management Merge #
255 ##########################################
258 name: lf-jenkins-cfg-global-vars
262 properties-content: 'jenkins_silos={jenkins-silos}'
263 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
264 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
266 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
267 name: lf-jenkins-cfg-merge
269 ######################
270 # Default parameters #
271 ######################
274 git-url: '$GIT_URL/$GERRIT_PROJECT'
275 jenkins-silos: production sandbox
277 #####################
278 # Job Configuration #
279 #####################
281 project-type: freestyle
286 - lf-infra-properties:
288 build-days-to-keep: 1
291 - lf-infra-parameters:
295 lftools-version: '{lftools-version}'
300 jenkins-ssh-credential: '{jenkins-ssh-credential}'
303 - shell: !include-raw-escape:
304 - ../shell/lftools-install.sh
305 - lf-jenkins-cfg-global-vars:
306 jenkins-silos: '{jenkins-silos}'
312 name: '{project-name}-jenkins-cfg-merge'
313 id: gerrit-jenkins-cfg-merge
314 <<: *lf_jenkins_cfg_merge
317 - lf-infra-gerrit-scm:
319 refspec: 'refs/heads/{branch}'
321 submodule-recursive: true
322 choosing-strategy: default
323 jenkins-ssh-credential: '{jenkins-ssh-credential}'
326 name: '{project-name}-jenkins-cfg-merge'
327 id: github-jenkins-cfg-merge
328 <<: *lf_jenkins_cfg_merge
332 url: '{git-url}/{github-org}/{project}'
335 - lf-infra-github-scm:
336 url: '{git-clone-url}{github-org}/{project}'
337 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
339 submodule-recursive: true
340 choosing-strategy: default
341 jenkins-ssh-credential: '{jenkins-ssh-credential}'
348 - lf_jjb_deploy_job: &lf_jjb_deploy_job
349 name: lf-jjb-deploy-job
351 ######################
352 # Default parameters #
353 ######################
356 git-url: '$GIT_URL/$GERRIT_PROJECT'
358 gerrit_jjb_deploy_job_triggers:
359 - comment-added-contains-event:
360 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
362 #####################
363 # Job Configuration #
364 #####################
366 project-type: freestyle
371 - lf-infra-properties:
373 build-days-to-keep: 1
376 - lf-infra-parameters:
380 lftools-version: '{lftools-version}'
385 jenkins-ssh-credential: '{jenkins-ssh-credential}'
389 pip-packages: jenkins-job-builder
390 - lf-infra-jjbini-sandbox
391 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
397 name: '{project-name}-jjb-deploy-job'
398 id: gerrit-jjb-deploy-job
399 <<: *lf_jjb_deploy_job
402 - lf-infra-gerrit-scm:
404 refspec: 'refs/heads/{branch}'
406 submodule-recursive: true
407 choosing-strategy: default
408 jenkins-ssh-credential: '{jenkins-ssh-credential}'
412 server-name: '{gerrit-server-name}'
413 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
415 - project-compare-type: ANT
416 project-pattern: '{project}'
418 - branch-compare-type: ANT
419 branch-pattern: '**/{branch}'
422 name: '{project-name}-jjb-deploy-job'
423 id: github-jjb-deploy-job
424 <<: *lf_jjb_deploy_job
428 url: '{git-url}/{github-org}/{project}'
431 - lf-infra-github-scm:
432 url: '{git-clone-url}{github-org}/{project}'
433 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
435 submodule-recursive: true
436 choosing-strategy: default
437 jenkins-ssh-credential: '{jenkins-ssh-credential}'
440 - lf-infra-github-pr-trigger:
441 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
442 only-trigger-phrase: true
443 status-context: 'JJB Deploy Job'
449 github_pr_admin_list:
456 - lf_jjb_merge: &lf_jjb_merge
459 ######################
460 # Default parameters #
461 ######################
463 gerrit_merge_triggers:
464 - change-merged-event
465 - comment-added-contains-event:
466 comment-contains-value: remerge$
468 #####################
469 # Job Configuration #
470 #####################
474 - shell: !include-raw-escape:
475 - ../shell/jjb-install.sh
476 - ../shell/jjb-merge-job.sh
479 name: '{project-name}-jjb-merge'
482 # yamllint disable-line rule:key-duplicates
485 git-url: '$GIT_URL/$GERRIT_PROJECT'
488 - lf-infra-gerrit-scm:
492 submodule-recursive: '{submodule-recursive}'
493 choosing-strategy: default
494 jenkins-ssh-credential: '{jenkins-ssh-credential}'
498 server-name: '{gerrit-server-name}'
499 trigger-on: '{obj:gerrit_merge_triggers}'
501 - project-compare-type: ANT
502 project-pattern: '{project}'
504 - branch-compare-type: ANT
505 branch-pattern: '**/{branch}'
506 file-paths: '{obj:gerrit_trigger_file_paths}'
509 name: '{project-name}-jjb-merge'
512 # yamllint disable-line rule:key-duplicates
517 url: '{git-url}/{github-org}/{project}'
520 - lf-infra-github-scm:
521 url: '{git-clone-url}{github-org}/{project}'
523 branch: 'refs/heads/{branch}'
524 submodule-recursive: '{submodule-recursive}'
525 choosing-strategy: default
526 jenkins-ssh-credential: '{jenkins-ssh-credential}'
532 - lf-infra-github-pr-trigger:
533 trigger-phrase: '^remerge$'
534 only-trigger-phrase: true
535 status-context: 'JJB Merge'
538 github-org: '{github-org}'
539 github_pr_whitelist: '{obj:github_pr_whitelist}'
540 github_pr_admin_list: '{obj:github_pr_admin_list}'
546 - lf_jjb_verify: &lf_jjb_verify
549 ######################
550 # Default parameters #
551 ######################
553 gerrit_verify_triggers:
554 - patchset-created-event:
556 exclude-trivial-rebase: false
557 exclude-no-code-change: false
558 - draft-published-event
559 - comment-added-contains-event:
560 comment-contains-value: recheck$
562 #####################
563 # Job Configuration #
564 #####################
570 - shell: !include-raw-escape:
571 - ../shell/git-validate-jira-urls.sh
572 - ../shell/jjb-install.sh
573 - ../shell/jjb-verify-job.sh
574 - ../shell/jjb-check-unicode.sh
575 - lf-infra-gpg-verify-git-signature
578 name: '{project-name}-jjb-verify'
579 id: gerrit-jjb-verify
581 # yamllint disable-line rule:key-duplicates
584 git-url: '$GIT_URL/$GERRIT_PROJECT'
587 - lf-infra-gerrit-scm:
589 refspec: '$GERRIT_REFSPEC'
590 branch: '$GERRIT_BRANCH'
591 submodule-recursive: '{submodule-recursive}'
592 choosing-strategy: gerrit
593 jenkins-ssh-credential: '{jenkins-ssh-credential}'
597 server-name: '{gerrit-server-name}'
598 trigger-on: '{obj:gerrit_verify_triggers}'
600 - project-compare-type: ANT
601 project-pattern: '{project}'
603 - branch-compare-type: ANT
604 branch-pattern: '**/{branch}'
605 file-paths: '{obj:gerrit_trigger_file_paths}'
608 name: '{project-name}-jjb-verify'
609 id: github-jjb-verify
611 # yamllint disable-line rule:key-duplicates
616 url: '{git-url}/{github-org}/{project}'
619 - lf-infra-github-scm:
620 url: '{git-clone-url}{github-org}/{project}'
621 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
623 submodule-recursive: '{submodule-recursive}'
624 choosing-strategy: default
625 jenkins-ssh-credential: '{jenkins-ssh-credential}'
628 - lf-infra-github-pr-trigger:
629 trigger-phrase: '^recheck$'
630 only-trigger-phrase: false
631 status-context: 'JJB Verify'
637 github_pr_admin_list:
644 - lf_packer_merge: &lf_packer_merge
645 name: lf-packer-merge
647 ######################
648 # Default parameters #
649 ######################
651 gerrit_merge_triggers:
652 - change-merged-event
653 - comment-added-contains-event:
654 comment-contains-value: remerge$
656 #####################
657 # Job Configuration #
658 #####################
661 - lf-infra-packer-validate:
662 packer-cloud-settings: '{packer-cloud-settings}'
663 packer-version: '{packer-version}'
664 - lf-infra-packer-build:
665 packer-cloud-settings: '{packer-cloud-settings}'
666 packer-version: '{packer-version}'
667 platform: '{platforms}'
668 template: '{templates}'
671 name: '{project-name}-packer-merge-{platforms}-{templates}'
672 id: gerrit-packer-merge
673 <<: *lf_packer_common
674 # yamllint disable-line rule:key-duplicates
677 git-url: '$GIT_URL/$GERRIT_PROJECT'
680 - lf-infra-gerrit-scm:
682 refspec: '$GERRIT_REFSPEC'
683 branch: '$GERRIT_BRANCH'
684 submodule-recursive: '{submodule-recursive}'
685 choosing-strategy: gerrit
686 jenkins-ssh-credential: '{jenkins-ssh-credential}'
689 - timed: '00 10 1 * *'
691 server-name: '{gerrit-server-name}'
692 trigger-on: '{obj:gerrit_merge_triggers}'
694 - project-compare-type: ANT
695 project-pattern: '{project}'
697 - branch-compare-type: ANT
698 branch-pattern: '**/{branch}'
699 <<: *lf_packer_file_paths
702 name: '{project-name}-packer-merge-{platforms}-{templates}'
703 id: github-packer-merge
704 <<: *lf_packer_common
705 # yamllint disable-line rule:key-duplicates
710 url: '{git-url}/{github-org}/{project}'
713 - lf-infra-github-scm:
714 url: '{git-clone-url}{github-org}/{project}'
716 branch: 'refs/heads/{branch}'
717 submodule-recursive: '{submodule-recursive}'
718 choosing-strategy: default
719 jenkins-ssh-credential: '{jenkins-ssh-credential}'
722 - timed: '00 10 1 * *'
726 - lf-infra-github-pr-trigger:
727 trigger-phrase: '^remerge$'
728 only-trigger-phrase: true
729 status-context: 'Packer {platforms}-${templates} Merge'
732 github-org: '{github-org}'
733 github_pr_whitelist: '{obj:github_pr_whitelist}'
734 github_pr_admin_list: '{obj:github_pr_admin_list}'
740 - lf_packer_verify: &lf_packer_verify
741 name: lf-packer-verify
743 ######################
744 # Default parameters #
745 ######################
749 gerrit_verify_triggers:
750 - patchset-created-event:
752 exclude-trivial-rebase: false
753 exclude-no-code-change: false
754 - draft-published-event
755 - comment-added-contains-event:
756 comment-contains-value: recheck$
758 gerrit_trigger_file_paths:
760 pattern: 'packer/vars/**.json'
762 pattern: 'packer/templates/**.json'
764 pattern: 'packer/provision/**.sh'
766 pattern: 'packer/provision/lib/**'
768 #####################
769 # Job Configuration #
770 #####################
775 - lf-infra-packer-validate:
776 packer-cloud-settings: '{packer-cloud-settings}'
777 packer-version: '{packer-version}'
780 name: '{project-name}-packer-verify'
781 id: gerrit-packer-verify
782 <<: *lf_packer_common
783 # yamllint disable-line rule:key-duplicates
784 <<: *lf_packer_verify
786 git-url: '$GIT_URL/$GERRIT_PROJECT'
789 - lf-infra-gerrit-scm:
791 refspec: '$GERRIT_REFSPEC'
792 branch: '$GERRIT_BRANCH'
793 submodule-recursive: '{submodule-recursive}'
794 choosing-strategy: gerrit
795 jenkins-ssh-credential: '{jenkins-ssh-credential}'
799 server-name: '{gerrit-server-name}'
800 trigger-on: '{obj:gerrit_verify_triggers}'
802 - project-compare-type: ANT
803 project-pattern: '{project}'
805 - branch-compare-type: ANT
806 branch-pattern: '**/{branch}'
807 file-paths: '{obj:gerrit_trigger_file_paths}'
810 name: '{project-name}-packer-verify'
811 id: github-packer-verify
812 <<: *lf_packer_common
813 # yamllint disable-line rule:key-duplicates
814 <<: *lf_packer_verify
818 url: '{git-url}/{github-org}/{project}'
821 - lf-infra-github-scm:
822 url: '{git-clone-url}{github-org}/{project}'
823 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
825 submodule-recursive: '{submodule-recursive}'
826 choosing-strategy: default
827 jenkins-ssh-credential: '{jenkins-ssh-credential}'
830 - lf-infra-github-pr-trigger:
831 trigger-phrase: '^recheck$'
832 only-trigger-phrase: false
833 status-context: 'Packer Verify'
839 github_pr_admin_list: