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
532 - ../shell/jjb-cleanup.sh
535 name: '{project-name}-jjb-merge'
538 # yamllint disable-line rule:key-duplicates
541 git-url: '$GIT_URL/$GERRIT_PROJECT'
544 - lf-infra-gerrit-scm:
548 submodule-recursive: '{submodule-recursive}'
549 choosing-strategy: default
550 jenkins-ssh-credential: '{jenkins-ssh-credential}'
554 server-name: '{gerrit-server-name}'
555 trigger-on: '{obj:gerrit_merge_triggers}'
557 - project-compare-type: ANT
558 project-pattern: '{project}'
560 - branch-compare-type: ANT
561 branch-pattern: '**/{branch}'
562 file-paths: '{obj:gerrit_trigger_file_paths}'
565 name: '{project-name}-jjb-merge'
568 # yamllint disable-line rule:key-duplicates
573 url: '{git-url}/{github-org}/{project}'
576 - lf-infra-github-scm:
577 url: '{git-clone-url}{github-org}/{project}'
579 branch: 'refs/heads/{branch}'
580 submodule-recursive: '{submodule-recursive}'
581 choosing-strategy: default
582 jenkins-ssh-credential: '{jenkins-ssh-credential}'
588 - lf-infra-github-pr-trigger:
589 trigger-phrase: '^remerge$'
590 only-trigger-phrase: true
591 status-context: 'JJB Merge'
594 github-org: '{github-org}'
595 github_pr_whitelist: '{obj:github_pr_whitelist}'
596 github_pr_admin_list: '{obj:github_pr_admin_list}'
602 - lf_jjb_verify: &lf_jjb_verify
605 ######################
606 # Default parameters #
607 ######################
609 gerrit_verify_triggers:
610 - patchset-created-event:
612 exclude-trivial-rebase: false
613 exclude-no-code-change: false
614 - draft-published-event
615 - comment-added-contains-event:
616 comment-contains-value: recheck$
618 #####################
619 # Job Configuration #
620 #####################
626 - shell: !include-raw-escape:
627 - ../shell/git-validate-jira-urls.sh
628 - ../shell/jjb-install.sh
629 - ../shell/jjb-verify-job.sh
630 - ../shell/jjb-check-unicode.sh
631 - ../shell/jjb-cleanup.sh
632 - lf-infra-gpg-verify-git-signature
635 name: '{project-name}-jjb-verify'
636 id: gerrit-jjb-verify
638 # yamllint disable-line rule:key-duplicates
641 git-url: '$GIT_URL/$GERRIT_PROJECT'
644 - lf-infra-gerrit-scm:
646 refspec: '$GERRIT_REFSPEC'
647 branch: '$GERRIT_BRANCH'
648 submodule-recursive: '{submodule-recursive}'
649 choosing-strategy: gerrit
650 jenkins-ssh-credential: '{jenkins-ssh-credential}'
654 server-name: '{gerrit-server-name}'
655 trigger-on: '{obj:gerrit_verify_triggers}'
657 - project-compare-type: ANT
658 project-pattern: '{project}'
660 - branch-compare-type: ANT
661 branch-pattern: '**/{branch}'
662 file-paths: '{obj:gerrit_trigger_file_paths}'
665 name: '{project-name}-jjb-verify'
666 id: github-jjb-verify
668 # yamllint disable-line rule:key-duplicates
673 url: '{git-url}/{github-org}/{project}'
676 - lf-infra-github-scm:
677 url: '{git-clone-url}{github-org}/{project}'
678 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
680 submodule-recursive: '{submodule-recursive}'
681 choosing-strategy: default
682 jenkins-ssh-credential: '{jenkins-ssh-credential}'
685 - lf-infra-github-pr-trigger:
686 trigger-phrase: '^recheck$'
687 only-trigger-phrase: false
688 status-context: 'JJB Verify'
694 github_pr_admin_list:
701 - lf_packer_merge: &lf_packer_merge
702 name: lf-packer-merge
704 ######################
705 # Default parameters #
706 ######################
708 gerrit_merge_triggers:
709 - change-merged-event
710 - comment-added-contains-event:
711 comment-contains-value: remerge$
713 #####################
714 # Job Configuration #
715 #####################
718 - lf-infra-packer-validate:
719 packer-cloud-settings: '{packer-cloud-settings}'
720 packer-version: '{packer-version}'
721 - lf-infra-packer-build:
722 packer-cloud-settings: '{packer-cloud-settings}'
723 packer-version: '{packer-version}'
724 platform: '{platforms}'
725 template: '{templates}'
728 name: '{project-name}-packer-merge-{platforms}-{templates}'
729 id: gerrit-packer-merge
730 <<: *lf_packer_common
731 # yamllint disable-line rule:key-duplicates
734 git-url: '$GIT_URL/$GERRIT_PROJECT'
737 - lf-infra-gerrit-scm:
739 refspec: '$GERRIT_REFSPEC'
740 branch: '$GERRIT_BRANCH'
741 submodule-recursive: '{submodule-recursive}'
742 choosing-strategy: gerrit
743 jenkins-ssh-credential: '{jenkins-ssh-credential}'
746 - timed: '00 10 1 * *'
748 server-name: '{gerrit-server-name}'
749 trigger-on: '{obj:gerrit_merge_triggers}'
751 - project-compare-type: ANT
752 project-pattern: '{project}'
754 - branch-compare-type: ANT
755 branch-pattern: '**/{branch}'
756 <<: *lf_packer_file_paths
759 name: '{project-name}-packer-merge-{platforms}-{templates}'
760 id: github-packer-merge
761 <<: *lf_packer_common
762 # yamllint disable-line rule:key-duplicates
767 url: '{git-url}/{github-org}/{project}'
770 - lf-infra-github-scm:
771 url: '{git-clone-url}{github-org}/{project}'
773 branch: 'refs/heads/{branch}'
774 submodule-recursive: '{submodule-recursive}'
775 choosing-strategy: default
776 jenkins-ssh-credential: '{jenkins-ssh-credential}'
779 - timed: '00 10 1 * *'
783 - lf-infra-github-pr-trigger:
784 trigger-phrase: '^remerge$'
785 only-trigger-phrase: true
786 status-context: 'Packer {platforms}-${templates} Merge'
789 github-org: '{github-org}'
790 github_pr_whitelist: '{obj:github_pr_whitelist}'
791 github_pr_admin_list: '{obj:github_pr_admin_list}'
797 - lf_packer_verify: &lf_packer_verify
798 name: lf-packer-verify
800 ######################
801 # Default parameters #
802 ######################
806 gerrit_verify_triggers:
807 - patchset-created-event:
809 exclude-trivial-rebase: false
810 exclude-no-code-change: false
811 - draft-published-event
812 - comment-added-contains-event:
813 comment-contains-value: recheck$
815 gerrit_trigger_file_paths:
817 pattern: 'packer/vars/**.json'
819 pattern: 'packer/templates/**.json'
821 pattern: 'packer/provision/**.sh'
823 pattern: 'packer/provision/lib/**'
825 #####################
826 # Job Configuration #
827 #####################
832 - lf-infra-packer-validate:
833 packer-cloud-settings: '{packer-cloud-settings}'
834 packer-version: '{packer-version}'
837 name: '{project-name}-packer-verify'
838 id: gerrit-packer-verify
839 <<: *lf_packer_common
840 # yamllint disable-line rule:key-duplicates
841 <<: *lf_packer_verify
843 git-url: '$GIT_URL/$GERRIT_PROJECT'
846 - lf-infra-gerrit-scm:
848 refspec: '$GERRIT_REFSPEC'
849 branch: '$GERRIT_BRANCH'
850 submodule-recursive: '{submodule-recursive}'
851 choosing-strategy: gerrit
852 jenkins-ssh-credential: '{jenkins-ssh-credential}'
856 server-name: '{gerrit-server-name}'
857 trigger-on: '{obj:gerrit_verify_triggers}'
859 - project-compare-type: ANT
860 project-pattern: '{project}'
862 - branch-compare-type: ANT
863 branch-pattern: '**/{branch}'
864 file-paths: '{obj:gerrit_trigger_file_paths}'
867 name: '{project-name}-packer-verify'
868 id: github-packer-verify
869 <<: *lf_packer_common
870 # yamllint disable-line rule:key-duplicates
871 <<: *lf_packer_verify
875 url: '{git-url}/{github-org}/{project}'
878 - lf-infra-github-scm:
879 url: '{git-clone-url}{github-org}/{project}'
880 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
882 submodule-recursive: '{submodule-recursive}'
883 choosing-strategy: default
884 jenkins-ssh-credential: '{jenkins-ssh-credential}'
887 - lf-infra-github-pr-trigger:
888 trigger-phrase: '^recheck$'
889 only-trigger-phrase: false
890 status-context: 'Packer Verify'
896 github_pr_admin_list: