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:
153 pattern: '**/global-jjb'
155 #####################
156 # Job Configuration #
157 #####################
159 project-type: freestyle
163 - lf-infra-properties:
165 build-days-to-keep: 7
168 - lf-infra-parameters:
172 lftools-version: '{lftools-version}'
173 - lf-infra-jjb-parameters:
174 jjb-version: '{jjb-version}'
178 build-timeout: '{build-timeout}'
179 jenkins-ssh-credential: '{jenkins-ssh-credential}'
184 ######################
185 # Gerrit Branch Lock #
186 ######################
189 name: '{project-name}-gerrit-branch-lock-{stream}'
190 id: gerrit-branch-lock
192 ######################
193 # Default parameters #
194 ######################
197 git-url: '$GIT_URL/$GERRIT_PROJECT'
199 gerrit_merge_triggers:
200 - comment-added-contains-event:
201 comment-contains-value: (un)?lock branch$
203 #####################
204 # Job Configuration #
205 #####################
207 project-type: freestyle
211 - lf-infra-properties:
213 build-days-to-keep: 1
216 - lf-infra-parameters:
220 lftools-version: '{lftools-version}'
225 jenkins-ssh-credential: '{jenkins-ssh-credential}'
228 - lf-infra-gerrit-scm:
232 submodule-recursive: false
233 choosing-strategy: default
234 jenkins-ssh-credential: '{jenkins-ssh-credential}'
238 server-name: '{gerrit-server-name}'
239 trigger-on: '{obj:gerrit_merge_triggers}'
241 - project-compare-type: ANT
242 project-pattern: '{project}'
244 - branch-compare-type: ANT
245 branch-pattern: '**/{branch}'
248 - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
254 ##########################################
255 # Jenkins Configuration Management Merge #
256 ##########################################
259 name: lf-jenkins-cfg-clouds
263 properties-content: 'jenkins_silos={jenkins-silos}'
264 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
265 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
268 name: lf-jenkins-cfg-global-vars
272 properties-content: 'jenkins_silos={jenkins-silos}'
273 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
274 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
276 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
277 name: lf-jenkins-cfg-merge
279 ######################
280 # Default parameters #
281 ######################
285 git-url: '$GIT_URL/$GERRIT_PROJECT'
286 jenkins-silos: production sandbox
288 gerrit_merge_triggers:
289 - change-merged-event
290 - comment-added-contains-event:
291 comment-contains-value: remerge$
293 gerrit_trigger_file_paths:
295 pattern: 'jenkins-config/**'
297 #####################
298 # Job Configuration #
299 #####################
301 project-type: freestyle
306 - lf-infra-properties:
308 build-days-to-keep: 1
311 - lf-infra-parameters:
315 lftools-version: '{lftools-version}'
320 jenkins-ssh-credential: '{jenkins-ssh-credential}'
323 - shell: !include-raw-escape:
324 - ../shell/lftools-install.sh
325 - lf-jenkins-cfg-global-vars:
326 jenkins-silos: '{jenkins-silos}'
327 - lf-jenkins-cfg-clouds:
328 jenkins-silos: '{jenkins-silos}'
334 name: '{project-name}-jenkins-cfg-merge'
335 id: gerrit-jenkins-cfg-merge
336 <<: *lf_jenkins_cfg_merge
339 - lf-infra-gerrit-scm:
341 refspec: 'refs/heads/{branch}'
343 submodule-recursive: true
344 choosing-strategy: default
345 jenkins-ssh-credential: '{jenkins-ssh-credential}'
348 - timed: '{obj:cron}'
350 server-name: '{gerrit-server-name}'
351 trigger-on: '{obj:gerrit_merge_triggers}'
353 - project-compare-type: ANT
354 project-pattern: '{project}'
356 - branch-compare-type: ANT
357 branch-pattern: '**/{branch}'
358 file-paths: '{obj:gerrit_trigger_file_paths}'
361 name: '{project-name}-jenkins-cfg-merge'
362 id: github-jenkins-cfg-merge
363 <<: *lf_jenkins_cfg_merge
367 url: '{git-url}/{github-org}/{project}'
370 - lf-infra-github-scm:
371 url: '{git-clone-url}{github-org}/{project}'
373 branch: 'refs/heads/{branch}'
374 submodule-recursive: true
375 choosing-strategy: default
376 jenkins-ssh-credential: '{jenkins-ssh-credential}'
379 - timed: '{obj:cron}'
383 - lf-infra-github-pr-trigger:
384 trigger-phrase: '^remerge$'
385 only-trigger-phrase: true
386 status-context: 'Jenkins CFG Merge'
389 github-org: '{github-org}'
390 github_pr_whitelist: '{obj:github_pr_whitelist}'
391 github_pr_admin_list: '{obj:github_pr_admin_list}'
398 - lf_jjb_deploy_job: &lf_jjb_deploy_job
399 name: lf-jjb-deploy-job
401 ######################
402 # Default parameters #
403 ######################
406 git-url: '$GIT_URL/$GERRIT_PROJECT'
408 gerrit_jjb_deploy_job_triggers:
409 - comment-added-contains-event:
410 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
412 #####################
413 # Job Configuration #
414 #####################
416 project-type: freestyle
421 - lf-infra-properties:
423 build-days-to-keep: 1
426 - lf-infra-parameters:
430 lftools-version: '{lftools-version}'
435 jenkins-ssh-credential: '{jenkins-ssh-credential}'
439 pip-packages: jenkins-job-builder
440 - lf-infra-jjbini-sandbox
441 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
447 name: '{project-name}-jjb-deploy-job'
448 id: gerrit-jjb-deploy-job
449 <<: *lf_jjb_deploy_job
452 - lf-infra-gerrit-scm:
454 refspec: 'refs/heads/{branch}'
456 submodule-recursive: true
457 choosing-strategy: default
458 jenkins-ssh-credential: '{jenkins-ssh-credential}'
462 server-name: '{gerrit-server-name}'
463 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
465 - project-compare-type: ANT
466 project-pattern: '{project}'
468 - branch-compare-type: ANT
469 branch-pattern: '**/{branch}'
477 name: '{project-name}-jjb-deploy-job'
478 id: github-jjb-deploy-job
479 <<: *lf_jjb_deploy_job
483 url: '{git-url}/{github-org}/{project}'
486 - lf-infra-github-scm:
487 url: '{git-clone-url}{github-org}/{project}'
488 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
490 submodule-recursive: true
491 choosing-strategy: default
492 jenkins-ssh-credential: '{jenkins-ssh-credential}'
495 - lf-infra-github-pr-trigger:
496 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
497 only-trigger-phrase: true
498 status-context: 'JJB Deploy Job'
504 github_pr_admin_list:
511 - lf_jjb_merge: &lf_jjb_merge
514 ######################
515 # Default parameters #
516 ######################
518 gerrit_merge_triggers:
519 - change-merged-event
520 - comment-added-contains-event:
521 comment-contains-value: remerge$
523 #####################
524 # Job Configuration #
525 #####################
529 - shell: !include-raw-escape:
530 - ../shell/jjb-install.sh
531 - ../shell/jjb-merge-job.sh
534 name: '{project-name}-jjb-merge'
537 # yamllint disable-line rule:key-duplicates
540 git-url: '$GIT_URL/$GERRIT_PROJECT'
543 - lf-infra-gerrit-scm:
547 submodule-recursive: '{submodule-recursive}'
548 choosing-strategy: default
549 jenkins-ssh-credential: '{jenkins-ssh-credential}'
553 server-name: '{gerrit-server-name}'
554 trigger-on: '{obj:gerrit_merge_triggers}'
556 - project-compare-type: ANT
557 project-pattern: '{project}'
559 - branch-compare-type: ANT
560 branch-pattern: '**/{branch}'
561 file-paths: '{obj:gerrit_trigger_file_paths}'
564 name: '{project-name}-jjb-merge'
567 # yamllint disable-line rule:key-duplicates
572 url: '{git-url}/{github-org}/{project}'
575 - lf-infra-github-scm:
576 url: '{git-clone-url}{github-org}/{project}'
578 branch: 'refs/heads/{branch}'
579 submodule-recursive: '{submodule-recursive}'
580 choosing-strategy: default
581 jenkins-ssh-credential: '{jenkins-ssh-credential}'
587 - lf-infra-github-pr-trigger:
588 trigger-phrase: '^remerge$'
589 only-trigger-phrase: true
590 status-context: 'JJB Merge'
593 github-org: '{github-org}'
594 github_pr_whitelist: '{obj:github_pr_whitelist}'
595 github_pr_admin_list: '{obj:github_pr_admin_list}'
601 - lf_jjb_verify: &lf_jjb_verify
604 ######################
605 # Default parameters #
606 ######################
608 gerrit_verify_triggers:
609 - patchset-created-event:
611 exclude-trivial-rebase: false
612 exclude-no-code-change: false
613 - draft-published-event
614 - comment-added-contains-event:
615 comment-contains-value: recheck$
617 #####################
618 # Job Configuration #
619 #####################
625 - shell: !include-raw-escape:
626 - ../shell/git-validate-jira-urls.sh
627 - ../shell/jjb-install.sh
628 - ../shell/jjb-verify-job.sh
629 - ../shell/jjb-check-unicode.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 git-url: '$GIT_URL/$GERRIT_PROJECT'
642 - lf-infra-gerrit-scm:
644 refspec: '$GERRIT_REFSPEC'
645 branch: '$GERRIT_BRANCH'
646 submodule-recursive: '{submodule-recursive}'
647 choosing-strategy: gerrit
648 jenkins-ssh-credential: '{jenkins-ssh-credential}'
652 server-name: '{gerrit-server-name}'
653 trigger-on: '{obj:gerrit_verify_triggers}'
655 - project-compare-type: ANT
656 project-pattern: '{project}'
658 - branch-compare-type: ANT
659 branch-pattern: '**/{branch}'
660 file-paths: '{obj:gerrit_trigger_file_paths}'
663 name: '{project-name}-jjb-verify'
664 id: github-jjb-verify
666 # yamllint disable-line rule:key-duplicates
671 url: '{git-url}/{github-org}/{project}'
674 - lf-infra-github-scm:
675 url: '{git-clone-url}{github-org}/{project}'
676 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
678 submodule-recursive: '{submodule-recursive}'
679 choosing-strategy: default
680 jenkins-ssh-credential: '{jenkins-ssh-credential}'
683 - lf-infra-github-pr-trigger:
684 trigger-phrase: '^recheck$'
685 only-trigger-phrase: false
686 status-context: 'JJB Verify'
692 github_pr_admin_list:
699 - lf_packer_merge: &lf_packer_merge
700 name: lf-packer-merge
702 ######################
703 # Default parameters #
704 ######################
706 gerrit_merge_triggers:
707 - change-merged-event
708 - comment-added-contains-event:
709 comment-contains-value: remerge$
711 #####################
712 # Job Configuration #
713 #####################
716 - lf-infra-packer-validate:
717 packer-cloud-settings: '{packer-cloud-settings}'
718 packer-version: '{packer-version}'
719 - lf-infra-packer-build:
720 packer-cloud-settings: '{packer-cloud-settings}'
721 packer-version: '{packer-version}'
722 platform: '{platforms}'
723 template: '{templates}'
726 name: '{project-name}-packer-merge-{platforms}-{templates}'
727 id: gerrit-packer-merge
728 <<: *lf_packer_common
729 # yamllint disable-line rule:key-duplicates
732 git-url: '$GIT_URL/$GERRIT_PROJECT'
735 - lf-infra-gerrit-scm:
737 refspec: '$GERRIT_REFSPEC'
738 branch: '$GERRIT_BRANCH'
739 submodule-recursive: '{submodule-recursive}'
740 choosing-strategy: gerrit
741 jenkins-ssh-credential: '{jenkins-ssh-credential}'
744 - timed: '00 10 1 * *'
746 server-name: '{gerrit-server-name}'
747 trigger-on: '{obj:gerrit_merge_triggers}'
749 - project-compare-type: ANT
750 project-pattern: '{project}'
752 - branch-compare-type: ANT
753 branch-pattern: '**/{branch}'
754 <<: *lf_packer_file_paths
757 name: '{project-name}-packer-merge-{platforms}-{templates}'
758 id: github-packer-merge
759 <<: *lf_packer_common
760 # yamllint disable-line rule:key-duplicates
765 url: '{git-url}/{github-org}/{project}'
768 - lf-infra-github-scm:
769 url: '{git-clone-url}{github-org}/{project}'
771 branch: 'refs/heads/{branch}'
772 submodule-recursive: '{submodule-recursive}'
773 choosing-strategy: default
774 jenkins-ssh-credential: '{jenkins-ssh-credential}'
777 - timed: '00 10 1 * *'
781 - lf-infra-github-pr-trigger:
782 trigger-phrase: '^remerge$'
783 only-trigger-phrase: true
784 status-context: 'Packer {platforms}-${templates} Merge'
787 github-org: '{github-org}'
788 github_pr_whitelist: '{obj:github_pr_whitelist}'
789 github_pr_admin_list: '{obj:github_pr_admin_list}'
795 - lf_packer_verify: &lf_packer_verify
796 name: lf-packer-verify
798 ######################
799 # Default parameters #
800 ######################
804 gerrit_verify_triggers:
805 - patchset-created-event:
807 exclude-trivial-rebase: false
808 exclude-no-code-change: false
809 - draft-published-event
810 - comment-added-contains-event:
811 comment-contains-value: recheck$
813 gerrit_trigger_file_paths:
815 pattern: 'packer/vars/**.json'
817 pattern: 'packer/templates/**.json'
819 pattern: 'packer/provision/**.sh'
821 pattern: 'packer/provision/lib/**'
823 #####################
824 # Job Configuration #
825 #####################
830 - lf-infra-packer-validate:
831 packer-cloud-settings: '{packer-cloud-settings}'
832 packer-version: '{packer-version}'
835 name: '{project-name}-packer-verify'
836 id: gerrit-packer-verify
837 <<: *lf_packer_common
838 # yamllint disable-line rule:key-duplicates
839 <<: *lf_packer_verify
841 git-url: '$GIT_URL/$GERRIT_PROJECT'
844 - lf-infra-gerrit-scm:
846 refspec: '$GERRIT_REFSPEC'
847 branch: '$GERRIT_BRANCH'
848 submodule-recursive: '{submodule-recursive}'
849 choosing-strategy: gerrit
850 jenkins-ssh-credential: '{jenkins-ssh-credential}'
854 server-name: '{gerrit-server-name}'
855 trigger-on: '{obj:gerrit_verify_triggers}'
857 - project-compare-type: ANT
858 project-pattern: '{project}'
860 - branch-compare-type: ANT
861 branch-pattern: '**/{branch}'
862 file-paths: '{obj:gerrit_trigger_file_paths}'
865 name: '{project-name}-packer-verify'
866 id: github-packer-verify
867 <<: *lf_packer_common
868 # yamllint disable-line rule:key-duplicates
869 <<: *lf_packer_verify
873 url: '{git-url}/{github-org}/{project}'
876 - lf-infra-github-scm:
877 url: '{git-clone-url}{github-org}/{project}'
878 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
880 submodule-recursive: '{submodule-recursive}'
881 choosing-strategy: default
882 jenkins-ssh-credential: '{jenkins-ssh-credential}'
885 - lf-infra-github-pr-trigger:
886 trigger-phrase: '^recheck$'
887 only-trigger-phrase: false
888 status-context: 'Packer Verify'
894 github_pr_admin_list: