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-clouds
264 properties-content: 'jenkins_silos={jenkins-silos}'
265 - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
266 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
269 name: lf-jenkins-cfg-global-vars
273 properties-content: 'jenkins_silos={jenkins-silos}'
274 - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
275 - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
277 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
278 name: lf-jenkins-cfg-merge
280 ######################
281 # Default parameters #
282 ######################
286 git-url: '$GIT_URL/$GERRIT_PROJECT'
287 jenkins-silos: production sandbox
289 gerrit_merge_triggers:
290 - change-merged-event
291 - comment-added-contains-event:
292 comment-contains-value: remerge$
294 gerrit_trigger_file_paths:
296 pattern: 'jenkins-config/**'
298 #####################
299 # Job Configuration #
300 #####################
302 project-type: freestyle
307 - lf-infra-properties:
309 build-days-to-keep: 1
312 - lf-infra-parameters:
316 lftools-version: '{lftools-version}'
321 jenkins-ssh-credential: '{jenkins-ssh-credential}'
324 - shell: !include-raw-escape:
325 - ../shell/lftools-install.sh
326 - lf-jenkins-cfg-global-vars:
327 jenkins-silos: '{jenkins-silos}'
328 - lf-jenkins-cfg-clouds:
329 jenkins-silos: '{jenkins-silos}'
335 name: '{project-name}-jenkins-cfg-merge'
336 id: gerrit-jenkins-cfg-merge
337 <<: *lf_jenkins_cfg_merge
340 - lf-infra-gerrit-scm:
342 refspec: 'refs/heads/{branch}'
344 submodule-recursive: true
345 choosing-strategy: default
346 jenkins-ssh-credential: '{jenkins-ssh-credential}'
349 - timed: '{obj:cron}'
351 server-name: '{gerrit-server-name}'
352 trigger-on: '{obj:gerrit_merge_triggers}'
354 - project-compare-type: ANT
355 project-pattern: '{project}'
357 - branch-compare-type: ANT
358 branch-pattern: '**/{branch}'
359 file-paths: '{obj:gerrit_trigger_file_paths}'
362 name: '{project-name}-jenkins-cfg-merge'
363 id: github-jenkins-cfg-merge
364 <<: *lf_jenkins_cfg_merge
368 url: '{git-url}/{github-org}/{project}'
371 - lf-infra-github-scm:
372 url: '{git-clone-url}{github-org}/{project}'
373 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
375 submodule-recursive: true
376 choosing-strategy: default
377 jenkins-ssh-credential: '{jenkins-ssh-credential}'
380 - timed: '{obj:cron}'
384 - lf-infra-github-pr-trigger:
385 trigger-phrase: '^remerge$'
386 only-trigger-phrase: true
387 status-context: 'Jenkins CFG Merge'
390 github-org: '{github-org}'
391 github_pr_whitelist: '{obj:github_pr_whitelist}'
392 github_pr_admin_list: '{obj:github_pr_admin_list}'
399 - lf_jjb_deploy_job: &lf_jjb_deploy_job
400 name: lf-jjb-deploy-job
402 ######################
403 # Default parameters #
404 ######################
407 git-url: '$GIT_URL/$GERRIT_PROJECT'
409 gerrit_jjb_deploy_job_triggers:
410 - comment-added-contains-event:
411 comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
413 #####################
414 # Job Configuration #
415 #####################
417 project-type: freestyle
422 - lf-infra-properties:
424 build-days-to-keep: 1
427 - lf-infra-parameters:
431 lftools-version: '{lftools-version}'
436 jenkins-ssh-credential: '{jenkins-ssh-credential}'
440 pip-packages: jenkins-job-builder
441 - lf-infra-jjbini-sandbox
442 - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
448 name: '{project-name}-jjb-deploy-job'
449 id: gerrit-jjb-deploy-job
450 <<: *lf_jjb_deploy_job
453 - lf-infra-gerrit-scm:
455 refspec: 'refs/heads/{branch}'
457 submodule-recursive: true
458 choosing-strategy: default
459 jenkins-ssh-credential: '{jenkins-ssh-credential}'
463 server-name: '{gerrit-server-name}'
464 trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
466 - project-compare-type: ANT
467 project-pattern: '{project}'
469 - branch-compare-type: ANT
470 branch-pattern: '**/{branch}'
473 name: '{project-name}-jjb-deploy-job'
474 id: github-jjb-deploy-job
475 <<: *lf_jjb_deploy_job
479 url: '{git-url}/{github-org}/{project}'
482 - lf-infra-github-scm:
483 url: '{git-clone-url}{github-org}/{project}'
484 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
486 submodule-recursive: true
487 choosing-strategy: default
488 jenkins-ssh-credential: '{jenkins-ssh-credential}'
491 - lf-infra-github-pr-trigger:
492 trigger-phrase: '^jjb-deploy (?!\*+$).+$'
493 only-trigger-phrase: true
494 status-context: 'JJB Deploy Job'
500 github_pr_admin_list:
507 - lf_jjb_merge: &lf_jjb_merge
510 ######################
511 # Default parameters #
512 ######################
514 gerrit_merge_triggers:
515 - change-merged-event
516 - comment-added-contains-event:
517 comment-contains-value: remerge$
519 #####################
520 # Job Configuration #
521 #####################
525 - shell: !include-raw-escape:
526 - ../shell/jjb-install.sh
527 - ../shell/jjb-merge-job.sh
530 name: '{project-name}-jjb-merge'
533 # yamllint disable-line rule:key-duplicates
536 git-url: '$GIT_URL/$GERRIT_PROJECT'
539 - lf-infra-gerrit-scm:
543 submodule-recursive: '{submodule-recursive}'
544 choosing-strategy: default
545 jenkins-ssh-credential: '{jenkins-ssh-credential}'
549 server-name: '{gerrit-server-name}'
550 trigger-on: '{obj:gerrit_merge_triggers}'
552 - project-compare-type: ANT
553 project-pattern: '{project}'
555 - branch-compare-type: ANT
556 branch-pattern: '**/{branch}'
557 file-paths: '{obj:gerrit_trigger_file_paths}'
560 name: '{project-name}-jjb-merge'
563 # yamllint disable-line rule:key-duplicates
568 url: '{git-url}/{github-org}/{project}'
571 - lf-infra-github-scm:
572 url: '{git-clone-url}{github-org}/{project}'
574 branch: 'refs/heads/{branch}'
575 submodule-recursive: '{submodule-recursive}'
576 choosing-strategy: default
577 jenkins-ssh-credential: '{jenkins-ssh-credential}'
583 - lf-infra-github-pr-trigger:
584 trigger-phrase: '^remerge$'
585 only-trigger-phrase: true
586 status-context: 'JJB Merge'
589 github-org: '{github-org}'
590 github_pr_whitelist: '{obj:github_pr_whitelist}'
591 github_pr_admin_list: '{obj:github_pr_admin_list}'
597 - lf_jjb_verify: &lf_jjb_verify
600 ######################
601 # Default parameters #
602 ######################
604 gerrit_verify_triggers:
605 - patchset-created-event:
607 exclude-trivial-rebase: false
608 exclude-no-code-change: false
609 - draft-published-event
610 - comment-added-contains-event:
611 comment-contains-value: recheck$
613 #####################
614 # Job Configuration #
615 #####################
621 - shell: !include-raw-escape:
622 - ../shell/git-validate-jira-urls.sh
623 - ../shell/jjb-install.sh
624 - ../shell/jjb-verify-job.sh
625 - ../shell/jjb-check-unicode.sh
626 - lf-infra-gpg-verify-git-signature
629 name: '{project-name}-jjb-verify'
630 id: gerrit-jjb-verify
632 # yamllint disable-line rule:key-duplicates
635 git-url: '$GIT_URL/$GERRIT_PROJECT'
638 - lf-infra-gerrit-scm:
640 refspec: '$GERRIT_REFSPEC'
641 branch: '$GERRIT_BRANCH'
642 submodule-recursive: '{submodule-recursive}'
643 choosing-strategy: gerrit
644 jenkins-ssh-credential: '{jenkins-ssh-credential}'
648 server-name: '{gerrit-server-name}'
649 trigger-on: '{obj:gerrit_verify_triggers}'
651 - project-compare-type: ANT
652 project-pattern: '{project}'
654 - branch-compare-type: ANT
655 branch-pattern: '**/{branch}'
656 file-paths: '{obj:gerrit_trigger_file_paths}'
659 name: '{project-name}-jjb-verify'
660 id: github-jjb-verify
662 # yamllint disable-line rule:key-duplicates
667 url: '{git-url}/{github-org}/{project}'
670 - lf-infra-github-scm:
671 url: '{git-clone-url}{github-org}/{project}'
672 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
674 submodule-recursive: '{submodule-recursive}'
675 choosing-strategy: default
676 jenkins-ssh-credential: '{jenkins-ssh-credential}'
679 - lf-infra-github-pr-trigger:
680 trigger-phrase: '^recheck$'
681 only-trigger-phrase: false
682 status-context: 'JJB Verify'
688 github_pr_admin_list:
695 - lf_packer_merge: &lf_packer_merge
696 name: lf-packer-merge
698 ######################
699 # Default parameters #
700 ######################
702 gerrit_merge_triggers:
703 - change-merged-event
704 - comment-added-contains-event:
705 comment-contains-value: remerge$
707 #####################
708 # Job Configuration #
709 #####################
712 - lf-infra-packer-validate:
713 packer-cloud-settings: '{packer-cloud-settings}'
714 packer-version: '{packer-version}'
715 - lf-infra-packer-build:
716 packer-cloud-settings: '{packer-cloud-settings}'
717 packer-version: '{packer-version}'
718 platform: '{platforms}'
719 template: '{templates}'
722 name: '{project-name}-packer-merge-{platforms}-{templates}'
723 id: gerrit-packer-merge
724 <<: *lf_packer_common
725 # yamllint disable-line rule:key-duplicates
728 git-url: '$GIT_URL/$GERRIT_PROJECT'
731 - lf-infra-gerrit-scm:
733 refspec: '$GERRIT_REFSPEC'
734 branch: '$GERRIT_BRANCH'
735 submodule-recursive: '{submodule-recursive}'
736 choosing-strategy: gerrit
737 jenkins-ssh-credential: '{jenkins-ssh-credential}'
740 - timed: '00 10 1 * *'
742 server-name: '{gerrit-server-name}'
743 trigger-on: '{obj:gerrit_merge_triggers}'
745 - project-compare-type: ANT
746 project-pattern: '{project}'
748 - branch-compare-type: ANT
749 branch-pattern: '**/{branch}'
750 <<: *lf_packer_file_paths
753 name: '{project-name}-packer-merge-{platforms}-{templates}'
754 id: github-packer-merge
755 <<: *lf_packer_common
756 # yamllint disable-line rule:key-duplicates
761 url: '{git-url}/{github-org}/{project}'
764 - lf-infra-github-scm:
765 url: '{git-clone-url}{github-org}/{project}'
767 branch: 'refs/heads/{branch}'
768 submodule-recursive: '{submodule-recursive}'
769 choosing-strategy: default
770 jenkins-ssh-credential: '{jenkins-ssh-credential}'
773 - timed: '00 10 1 * *'
777 - lf-infra-github-pr-trigger:
778 trigger-phrase: '^remerge$'
779 only-trigger-phrase: true
780 status-context: 'Packer {platforms}-${templates} Merge'
783 github-org: '{github-org}'
784 github_pr_whitelist: '{obj:github_pr_whitelist}'
785 github_pr_admin_list: '{obj:github_pr_admin_list}'
791 - lf_packer_verify: &lf_packer_verify
792 name: lf-packer-verify
794 ######################
795 # Default parameters #
796 ######################
800 gerrit_verify_triggers:
801 - patchset-created-event:
803 exclude-trivial-rebase: false
804 exclude-no-code-change: false
805 - draft-published-event
806 - comment-added-contains-event:
807 comment-contains-value: recheck$
809 gerrit_trigger_file_paths:
811 pattern: 'packer/vars/**.json'
813 pattern: 'packer/templates/**.json'
815 pattern: 'packer/provision/**.sh'
817 pattern: 'packer/provision/lib/**'
819 #####################
820 # Job Configuration #
821 #####################
826 - lf-infra-packer-validate:
827 packer-cloud-settings: '{packer-cloud-settings}'
828 packer-version: '{packer-version}'
831 name: '{project-name}-packer-verify'
832 id: gerrit-packer-verify
833 <<: *lf_packer_common
834 # yamllint disable-line rule:key-duplicates
835 <<: *lf_packer_verify
837 git-url: '$GIT_URL/$GERRIT_PROJECT'
840 - lf-infra-gerrit-scm:
842 refspec: '$GERRIT_REFSPEC'
843 branch: '$GERRIT_BRANCH'
844 submodule-recursive: '{submodule-recursive}'
845 choosing-strategy: gerrit
846 jenkins-ssh-credential: '{jenkins-ssh-credential}'
850 server-name: '{gerrit-server-name}'
851 trigger-on: '{obj:gerrit_verify_triggers}'
853 - project-compare-type: ANT
854 project-pattern: '{project}'
856 - branch-compare-type: ANT
857 branch-pattern: '**/{branch}'
858 file-paths: '{obj:gerrit_trigger_file_paths}'
861 name: '{project-name}-packer-verify'
862 id: github-packer-verify
863 <<: *lf_packer_common
864 # yamllint disable-line rule:key-duplicates
865 <<: *lf_packer_verify
869 url: '{git-url}/{github-org}/{project}'
872 - lf-infra-github-scm:
873 url: '{git-clone-url}{github-org}/{project}'
874 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
876 submodule-recursive: '{submodule-recursive}'
877 choosing-strategy: default
878 jenkins-ssh-credential: '{jenkins-ssh-credential}'
881 - lf-infra-github-pr-trigger:
882 trigger-phrase: '^recheck$'
883 only-trigger-phrase: false
884 status-context: 'Packer Verify'
890 github_pr_admin_list: