3 name: '{project-name}-ci-jobs'
5 # This job group contains all the recommended jobs that should be deployed
15 name: '{project-name}-github-ci-jobs'
17 # This job group contains all the recommended jobs that should be deployed
18 # for any project ci that is using github.
28 name: '{project-name}-packer-jobs'
30 # This job group contains all the recommended jobs that should be deployed
31 # for any project ci that is using packer.
37 - gerrit-packer-verify
41 name: '{project-name}-github-packer-jobs'
43 # This job group contains all the recommended jobs that should be deployed
44 # for any project ci that is using packer.
50 - github-packer-verify
59 - config-file-provider:
62 target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
64 - lf_packer_file_paths: &lf_packer_file_paths
65 name: lf-packer-file-paths
67 # Common files for all projects
69 pattern: 'packer/vars/{platforms}.json'
71 pattern: 'packer/templates/{templates}.json'
73 pattern: 'packer/provision/{templates}.sh'
75 pattern: 'packer/provision/lib/**'
77 - lf_packer: &lf_packer_common
78 name: lf-packer-common
79 # Provide configuration common in packer jobs.
81 ######################
82 # Default parameters #
83 ######################
88 submodule-recursive: true
89 packer-cloud-settings: packer-cloud-env
95 project-type: freestyle
99 - lf-infra-properties:
101 build-days-to-keep: 7
104 - lf-infra-parameters:
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 ######################
145 submodule-recursive: true
147 gerrit_trigger_file_paths:
153 #####################
154 # Job Configuration #
155 #####################
157 project-type: freestyle
161 - lf-infra-properties:
163 build-days-to-keep: 7
166 - lf-infra-parameters:
170 - lf-infra-jjb-parameters:
171 jjb-version: '{jjb-version}'
175 build-timeout: '{build-timeout}'
176 jenkins-ssh-credential: '{jenkins-ssh-credential}'
185 - lf_jjb_merge: &lf_jjb_merge
188 # JJB Merge job runs `jenkins-jobs update` to update production job configuration
190 # Required parameters:
192 # :build-node: The node to run build on.
193 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
194 # be configured in defaults.yaml)
195 # :mvn-settings: The name of settings file containing credentials for
198 # Optional parameters:
200 # :branch: Git branch to fetch for the build. (default: master)
201 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
202 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
203 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
204 # :stream: Keyword that can be used to represent a release code-name.
205 # Often the same as the branch. (default: master)
206 # :submodule-recursive: Whether to checkout submodules recursively.
209 # :gerrit_merge_triggers: Override Gerrit Triggers.
210 # :gerrit_trigger_file_paths: Override file paths which can be used to
211 # filter which file modifications will trigger a build.
212 # (default defined by lf_jjb_common)
214 ######################
215 # Default parameters #
216 ######################
218 gerrit_merge_triggers:
219 - change-merged-event
220 - comment-added-contains-event:
221 comment-contains-value: remerge$
223 #####################
224 # Job Configuration #
225 #####################
229 - shell: !include-raw-escape:
230 - ../shell/jjb-install.sh
231 - ../shell/jjb-merge-job.sh
234 name: '{project-name}-jjb-merge'
237 # yamllint disable-line rule:key-duplicates
240 git-url: '$GIT_URL/$GERRIT_PROJECT'
243 - lf-infra-gerrit-scm:
247 submodule-recursive: '{submodule-recursive}'
248 choosing-strategy: default
249 jenkins-ssh-credential: '{jenkins-ssh-credential}'
253 server-name: '{gerrit-server-name}'
254 trigger-on: '{obj:gerrit_merge_triggers}'
256 - project-compare-type: ANT
257 project-pattern: '{project}'
259 - branch-compare-type: ANT
260 branch-pattern: '**/{branch}'
261 file-paths: '{obj:gerrit_trigger_file_paths}'
264 name: '{project-name}-jjb-merge'
267 # yamllint disable-line rule:key-duplicates
272 url: '{git-url}/{github-org}/{project}'
275 - lf-infra-github-scm:
276 url: '{git-clone-url}{github-org}/{project}'
279 submodule-recursive: '{submodule-recursive}'
280 choosing-strategy: default
281 jenkins-ssh-credential: '{jenkins-ssh-credential}'
287 - lf-infra-github-pr-trigger:
288 trigger-phrase: '^remerge$'
289 only-trigger-phrase: true
290 status-context: 'JJB Merge'
293 github-org: '{github-org}'
294 github_pr_whitelist: '{obj:github_pr_whitelist}'
295 github_pr_admin_list: '{obj:github_pr_admin_list}'
301 - lf_jjb_verify: &lf_jjb_verify
304 # JJB Verify job runs `jenkins-jobs test` to validate JJB syntax
306 # Required parameters:
308 # :build-node: The node to run build on.
309 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
310 # be configured in defaults.yaml)
311 # :mvn-settings: The name of settings file containing credentials for
314 # Optional parameters:
316 # :branch: Git branch to fetch for the build. (default: master)
317 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
318 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
319 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
320 # :stream: Keyword that can be used to represent a release code-name.
321 # Often the same as the branch. (default: master)
322 # :submodule-recursive: Whether to checkout submodules recursively.
325 # :gerrit_verify_triggers: Override Gerrit Triggers.
326 # :gerrit_trigger_file_paths: Override file paths which can be used to
327 # filter which file modifications will trigger a build.
328 # (default defined by lf_jjb_common)
330 ######################
331 # Default parameters #
332 ######################
334 gerrit_verify_triggers:
335 - patchset-created-event:
336 exclude-drafts: false
337 exclude-trivial-rebase: false
338 exclude-no-code-change: false
339 - draft-published-event
340 - comment-added-contains-event:
341 comment-contains-value: recheck$
343 #####################
344 # Job Configuration #
345 #####################
351 - shell: !include-raw-escape:
352 - ../shell/git-validate-jira-urls.sh
353 - ../shell/jjb-install.sh
354 - ../shell/jjb-verify-job.sh
355 - ../shell/jjb-check-unicode.sh
356 - lf-infra-gpg-verify-git-signature
359 name: '{project-name}-jjb-verify'
360 id: gerrit-jjb-verify
362 # yamllint disable-line rule:key-duplicates
365 git-url: '$GIT_URL/$GERRIT_PROJECT'
368 - lf-infra-gerrit-scm:
370 refspec: '$GERRIT_REFSPEC'
371 branch: '$GERRIT_BRANCH'
372 submodule-recursive: '{submodule-recursive}'
373 choosing-strategy: gerrit
374 jenkins-ssh-credential: '{jenkins-ssh-credential}'
378 server-name: '{gerrit-server-name}'
379 trigger-on: '{obj:gerrit_verify_triggers}'
381 - project-compare-type: ANT
382 project-pattern: '{project}'
384 - branch-compare-type: ANT
385 branch-pattern: '**/{branch}'
386 file-paths: '{obj:gerrit_trigger_file_paths}'
389 name: '{project-name}-jjb-verify'
390 id: github-jjb-verify
392 # yamllint disable-line rule:key-duplicates
397 url: '{git-url}/{github-org}/{project}'
400 - lf-infra-github-scm:
401 url: '{git-clone-url}{github-org}/{project}'
402 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
404 submodule-recursive: '{submodule-recursive}'
405 choosing-strategy: default
406 jenkins-ssh-credential: '{jenkins-ssh-credential}'
409 - lf-infra-github-pr-trigger:
410 trigger-phrase: '^recheck$'
411 only-trigger-phrase: false
412 status-context: 'JJB Verify'
418 github_pr_admin_list:
425 - lf_packer_merge: &lf_packer_merge
426 name: lf-packer-merge
428 # Packer Merge job runs `packer build` to build system images in the cloud.
430 # Required parameters:
432 # :build-node: The node to run build on.
433 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
434 # be configured in defaults.yaml)
435 # :mvn-settings: The name of settings file containing credentials for
437 # :platforms: Platform or distribution to build. Typically json file
438 # found in the packer/vars directory. (Example: centos)
439 # :template: System template to build. Typically shell script found in
440 # the packer/provision directory. (Example: java-builder)
442 # Optional parameters:
444 # :branch: Git branch to fetch for the build. (default: master)
445 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
446 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
447 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
448 # :packer-cloud-settings: Name of settings file containing credentials
449 # for the cloud that packer will build on. (default: packer-cloud-env)
450 # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
451 # :stream: Keyword that can be used to represent a release code-name.
452 # Often the same as the branch. (default: master)
453 # :submodule-recursive: Whether to checkout submodules recursively.
456 # :gerrit_verify_triggers: Override Gerrit Triggers.
457 # :gerrit_trigger_file_paths: Override file paths which can be used to
458 # filter which file modifications will trigger a build.
459 # (default defined by lf_jjb_common)
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 #####################
475 - lf-infra-packer-validate:
476 packer-cloud-settings: '{packer-cloud-settings}'
477 packer-version: '{packer-version}'
478 - lf-infra-packer-build:
479 packer-cloud-settings: '{packer-cloud-settings}'
480 packer-version: '{packer-version}'
481 platform: '{platforms}'
482 template: '{templates}'
485 name: '{project-name}-packer-merge-{platforms}-{templates}'
486 id: gerrit-packer-merge
487 <<: *lf_packer_common
488 # yamllint disable-line rule:key-duplicates
491 git-url: '$GIT_URL/$GERRIT_PROJECT'
494 - lf-infra-gerrit-scm:
496 refspec: '$GERRIT_REFSPEC'
497 branch: '$GERRIT_BRANCH'
498 submodule-recursive: '{submodule-recursive}'
499 choosing-strategy: gerrit
500 jenkins-ssh-credential: '{jenkins-ssh-credential}'
503 - timed: '00 10 1 * *'
505 server-name: '{gerrit-server-name}'
506 trigger-on: '{obj:gerrit_merge_triggers}'
508 - project-compare-type: ANT
509 project-pattern: '{project}'
511 - branch-compare-type: ANT
512 branch-pattern: '**/{branch}'
513 <<: *lf_packer_file_paths
516 name: '{project-name}-packer-merge-{platforms}-{templates}'
517 id: github-packer-merge
518 <<: *lf_packer_common
519 # yamllint disable-line rule:key-duplicates
524 url: '{git-url}/{github-org}/{project}'
527 - lf-infra-github-scm:
528 url: '{git-clone-url}{github-org}/{project}'
531 submodule-recursive: '{submodule-recursive}'
532 choosing-strategy: default
533 jenkins-ssh-credential: '{jenkins-ssh-credential}'
536 - timed: '00 10 1 * *'
540 - lf-infra-github-pr-trigger:
541 trigger-phrase: '^remerge$'
542 only-trigger-phrase: true
543 status-context: 'Packer {platforms}-${templates} Merge'
546 github-org: '{github-org}'
547 github_pr_whitelist: '{obj:github_pr_whitelist}'
548 github_pr_admin_list: '{obj:github_pr_admin_list}'
554 - lf_packer_verify: &lf_packer_verify
555 name: lf-packer-verify
557 # Packer Verify job runs `packer validate` to verify packer configuration.
559 # Required parameters:
561 # :build-node: The node to run build on.
562 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
563 # be configured in defaults.yaml)
564 # :mvn-settings: The name of settings file containing credentials for
567 # Optional parameters:
569 # :branch: Git branch to fetch for the build. (default: master)
570 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
571 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
572 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
573 # :packer-cloud-settings: Name of settings file containing credentials
574 # for the cloud that packer will build on. (default: packer-cloud-env)
575 # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
576 # :stream: Keyword that can be used to represent a release code-name.
577 # Often the same as the branch. (default: master)
578 # :submodule-recursive: Whether to checkout submodules recursively.
581 # :gerrit_verify_triggers: Override Gerrit Triggers.
582 # :gerrit_trigger_file_paths: Override file paths which can be used to
583 # filter which file modifications will trigger a build.
584 # (default defined by lf_jjb_common)
586 ######################
587 # Default parameters #
588 ######################
592 gerrit_verify_triggers:
593 - patchset-created-event:
594 exclude-drafts: false
595 exclude-trivial-rebase: false
596 exclude-no-code-change: false
597 - draft-published-event
598 - comment-added-contains-event:
599 comment-contains-value: recheck$
601 #####################
602 # Job Configuration #
603 #####################
608 - lf-infra-packer-validate:
609 packer-cloud-settings: '{packer-cloud-settings}'
610 packer-version: '{packer-version}'
613 name: '{project-name}-packer-verify'
614 id: gerrit-packer-verify
615 <<: *lf_packer_common
616 # yamllint disable-line rule:key-duplicates
617 <<: *lf_packer_verify
619 git-url: '$GIT_URL/$GERRIT_PROJECT'
622 - lf-infra-gerrit-scm:
624 refspec: '$GERRIT_REFSPEC'
625 branch: '$GERRIT_BRANCH'
626 submodule-recursive: '{submodule-recursive}'
627 choosing-strategy: gerrit
628 jenkins-ssh-credential: '{jenkins-ssh-credential}'
632 server-name: '{gerrit-server-name}'
633 trigger-on: '{obj:gerrit_verify_triggers}'
635 - project-compare-type: ANT
636 project-pattern: '{project}'
638 - branch-compare-type: ANT
639 branch-pattern: '**/{branch}'
640 <<: *lf_packer_file_paths
643 name: '{project-name}-packer-verify'
644 id: github-packer-verify
645 <<: *lf_packer_common
646 # yamllint disable-line rule:key-duplicates
647 <<: *lf_packer_verify
651 url: '{git-url}/{github-org}/{project}'
654 - lf-infra-github-scm:
655 url: '{git-clone-url}{github-org}/{project}'
656 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
658 submodule-recursive: '{submodule-recursive}'
659 choosing-strategy: default
660 jenkins-ssh-credential: '{jenkins-ssh-credential}'
663 - lf-infra-github-pr-trigger:
664 trigger-phrase: '^recheck$'
665 only-trigger-phrase: false
666 status-context: 'Packer Verify'
672 github_pr_admin_list: