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 # Adds wrappers and parameters sections common to packer jobs.
81 ######################
82 # Default parameters #
83 ######################
86 packer-cloud-settings: packer-cloud-env
90 build-timeout: '{build-timeout}'
91 jenkins-ssh-credential: '{jenkins-ssh-credential}'
94 - lf-infra-parameters:
98 - lf-infra-packer-parameters:
99 packer-version: '{packer-version}'
102 name: lf-infra-jjb-parameters
106 default: '{jjb-version}'
107 description: Jenkins Job Builder version to download and install.
110 name: lf-infra-packer-parameters
114 default: '{packer-version}'
115 description: Packer version to download and install.
117 - lf_jjb_common: &lf_jjb_common
120 ######################
121 # Default parameters #
122 ######################
127 submodule-recursive: true
129 gerrit_trigger_file_paths:
135 #####################
136 # Job Configuration #
137 #####################
139 project-type: freestyle
143 - lf-infra-properties:
145 build-days-to-keep: 7
148 - lf-infra-parameters:
152 - lf-infra-jjb-parameters:
153 jjb-version: '{jjb-version}'
157 build-timeout: '{build-timeout}'
158 jenkins-ssh-credential: '{jenkins-ssh-credential}'
167 - lf_jjb_merge: &lf_jjb_merge
170 # JJB Merge job runs `jenkins-jobs update` to update production job configuration
172 # Required parameters:
174 # :build-node: The node to run build on.
175 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
176 # be configured in defaults.yaml)
177 # :mvn-settings: The name of settings file containing credentials for
180 # Optional parameters:
182 # :branch: Git branch to fetch for the build. (default: master)
183 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
184 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
185 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
186 # :stream: Keyword that can be used to represent a release code-name.
187 # Often the same as the branch. (default: master)
188 # :submodule-recursive: Whether to checkout submodules recursively.
191 # :gerrit_merge_triggers: Override Gerrit Triggers.
192 # :gerrit_trigger_file_paths: Override file paths which can be used to
193 # filter which file modifications will trigger a build.
194 # (default defined by lf_jjb_common)
196 ######################
197 # Default parameters #
198 ######################
200 gerrit_merge_triggers:
201 - change-merged-event
202 - comment-added-contains-event:
203 comment-contains-value: remerge$
205 #####################
206 # Job Configuration #
207 #####################
211 - shell: !include-raw-escape:
212 - ../shell/jjb-install.sh
213 - ../shell/jjb-merge-job.sh
216 name: '{project-name}-jjb-merge'
219 # yamllint disable-line rule:key-duplicates
222 git-url: '$GIT_URL/$GERRIT_PROJECT'
225 - lf-infra-gerrit-scm:
229 submodule-recursive: '{submodule-recursive}'
230 choosing-strategy: default
231 jenkins-ssh-credential: '{jenkins-ssh-credential}'
235 server-name: '{gerrit-server-name}'
236 trigger-on: '{obj:gerrit_merge_triggers}'
238 - project-compare-type: ANT
239 project-pattern: '{project}'
241 - branch-compare-type: ANT
242 branch-pattern: '**/{branch}'
243 file-paths: '{obj:gerrit_trigger_file_paths}'
246 name: '{project-name}-jjb-merge'
249 # yamllint disable-line rule:key-duplicates
254 url: '{git-url}/{github-org}/{project}'
257 - lf-infra-github-scm:
258 url: '{git-clone-url}{github-org}/{project}'
261 submodule-recursive: '{submodule-recursive}'
262 choosing-strategy: default
263 jenkins-ssh-credential: '{jenkins-ssh-credential}'
269 - lf-infra-github-pr-trigger:
270 trigger-phrase: '^remerge$'
271 only-trigger-phrase: true
272 status-context: 'JJB Merge'
275 github-org: '{github-org}'
276 github_pr_whitelist: '{obj:github_pr_whitelist}'
277 github_pr_admin_list: '{obj:github_pr_admin_list}'
283 - lf_jjb_verify: &lf_jjb_verify
286 # JJB Verify job runs `jenkins-jobs test` to validate JJB syntax
288 # Required parameters:
290 # :build-node: The node to run build on.
291 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
292 # be configured in defaults.yaml)
293 # :mvn-settings: The name of settings file containing credentials for
296 # Optional parameters:
298 # :branch: Git branch to fetch for the build. (default: master)
299 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
300 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
301 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
302 # :stream: Keyword that can be used to represent a release code-name.
303 # Often the same as the branch. (default: master)
304 # :submodule-recursive: Whether to checkout submodules recursively.
307 # :gerrit_verify_triggers: Override Gerrit Triggers.
308 # :gerrit_trigger_file_paths: Override file paths which can be used to
309 # filter which file modifications will trigger a build.
310 # (default defined by lf_jjb_common)
312 ######################
313 # Default parameters #
314 ######################
316 gerrit_verify_triggers:
317 - patchset-created-event:
318 exclude-drafts: false
319 exclude-trivial-rebase: false
320 exclude-no-code-change: false
321 - draft-published-event
322 - comment-added-contains-event:
323 comment-contains-value: recheck$
325 #####################
326 # Job Configuration #
327 #####################
333 - shell: !include-raw-escape:
334 - ../shell/git-validate-jira-urls.sh
335 - ../shell/jjb-install.sh
336 - ../shell/jjb-verify-job.sh
337 - ../shell/jjb-check-unicode.sh
338 - lf-infra-gpg-verify-git-signature
341 name: '{project-name}-jjb-verify'
342 id: gerrit-jjb-verify
344 # yamllint disable-line rule:key-duplicates
347 git-url: '$GIT_URL/$GERRIT_PROJECT'
350 - lf-infra-gerrit-scm:
352 refspec: '$GERRIT_REFSPEC'
353 branch: '$GERRIT_BRANCH'
354 submodule-recursive: '{submodule-recursive}'
355 choosing-strategy: gerrit
356 jenkins-ssh-credential: '{jenkins-ssh-credential}'
360 server-name: '{gerrit-server-name}'
361 trigger-on: '{obj:gerrit_verify_triggers}'
363 - project-compare-type: ANT
364 project-pattern: '{project}'
366 - branch-compare-type: ANT
367 branch-pattern: '**/{branch}'
368 file-paths: '{obj:gerrit_trigger_file_paths}'
371 name: '{project-name}-jjb-verify'
372 id: github-jjb-verify
374 # yamllint disable-line rule:key-duplicates
379 url: '{git-url}/{github-org}/{project}'
382 - lf-infra-github-scm:
383 url: '{git-clone-url}{github-org}/{project}'
384 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
386 submodule-recursive: '{submodule-recursive}'
387 choosing-strategy: default
388 jenkins-ssh-credential: '{jenkins-ssh-credential}'
391 - lf-infra-github-pr-trigger:
392 trigger-phrase: '^recheck$'
393 only-trigger-phrase: false
394 status-context: 'JJB Verify'
400 github_pr_admin_list:
407 - lf_packer_merge_builders: &lf_packer_merge_builders
408 name: lf-packer-merge-builders
410 # Adds builders section common to merge packer jobs.
411 # {packer-cloud-settings} is passed from the project, defines the managed
412 # file-id name created in Jenkins
413 # (default: packer-cloud-env)
414 # {packer-version}: is global defined in job group level, the version number
415 # can be updated to install the latest version of packer.
416 # {platforms}: defines the packer platform file, passed from the project.
417 # {template}: defines the packer template file, passed from the project.
420 - lf-infra-packer-validate:
421 packer-cloud-settings: '{packer-cloud-settings}'
422 packer-version: '{packer-version}'
423 - lf-infra-packer-build:
424 packer-cloud-settings: '{packer-cloud-settings}'
425 packer-version: '{packer-version}'
426 platform: '{platforms}'
427 template: '{templates}'
430 name: '{project-name}-packer-merge-{platforms}-{templates}'
431 id: gerrit-packer-merge
434 # yamllint disable-line rule:key-duplicates
435 <<: *lf_packer_common
436 # yamllint disable-line rule:key-duplicates
437 <<: *lf_packer_merge_builders
439 ######################
440 # Default parameters #
441 ######################
443 git-url: '$GIT_URL/$GERRIT_PROJECT'
445 gerrit_merge_triggers:
446 - change-merged-event
447 - comment-added-contains-event:
448 comment-contains-value: remerge$
450 #####################
451 # Job Configuration #
452 #####################
455 - lf-infra-gerrit-scm:
457 refspec: '$GERRIT_REFSPEC'
458 branch: '$GERRIT_BRANCH'
459 submodule-recursive: '{submodule-recursive}'
460 choosing-strategy: gerrit
461 jenkins-ssh-credential: '{jenkins-ssh-credential}'
464 - timed: '00 10 1 * *'
466 server-name: '{gerrit-server-name}'
467 trigger-on: '{obj:gerrit_merge_triggers}'
469 - project-compare-type: ANT
470 project-pattern: '{project}'
472 - branch-compare-type: ANT
473 branch-pattern: '**/{branch}'
474 <<: *lf_packer_file_paths
477 name: '{project-name}-packer-merge-{platforms}-{templates}'
478 id: github-packer-merge
481 # yamllint disable-line rule:key-duplicates
482 <<: *lf_packer_common
483 # yamllint disable-line rule:key-duplicates
484 <<: *lf_packer_merge_builders
486 #####################
487 # Job Configuration #
488 #####################
492 url: '{git-url}/{github-org}/{project}'
495 - lf-infra-github-scm:
496 url: '{git-clone-url}{github-org}/{project}'
499 submodule-recursive: '{submodule-recursive}'
500 choosing-strategy: default
501 jenkins-ssh-credential: '{jenkins-ssh-credential}'
504 - timed: '00 10 1 * *'
508 - lf-infra-github-pr-trigger:
509 trigger-phrase: '^remerge$'
510 only-trigger-phrase: true
511 status-context: 'Packer {platforms}-${templates} Merge'
514 github-org: '{github-org}'
515 github_pr_whitelist: '{obj:github_pr_whitelist}'
516 github_pr_admin_list: '{obj:github_pr_admin_list}'
522 - lf_packer_verify_builders: &lf_packer_verify_builders
523 name: lf-packer-verify-builders
525 # Adds builders section common to verify packer jobs.
526 # {packer-cloud-settings} is passed from the project, defines the managed
527 # file-id name created in Jenkins
528 # (default: packer-cloud-env)
529 # {packer-version}: is global defined in job group level, the version number
530 # can be updated to install the latest version of packer.
533 - lf-infra-packer-validate:
534 packer-cloud-settings: '{packer-cloud-settings}'
535 packer-version: '{packer-version}'
538 name: '{project-name}-packer-verify'
539 id: gerrit-packer-verify
542 # yamllint disable-line rule:key-duplicates
543 <<: *lf_packer_common
544 # yamllint disable-line rule:key-duplicates
545 <<: *lf_packer_verify_builders
547 ######################
548 # Default parameters #
549 ######################
552 git-url: '$GIT_URL/$GERRIT_PROJECT'
554 gerrit_verify_triggers:
555 - patchset-created-event:
556 exclude-drafts: false
557 exclude-trivial-rebase: false
558 exclude-no-code-change: false
559 - draft-published-event
560 - comment-added-contains-event:
561 comment-contains-value: recheck$
563 #####################
564 # Job Configuration #
565 #####################
568 - lf-infra-gerrit-scm:
570 refspec: '$GERRIT_REFSPEC'
571 branch: '$GERRIT_BRANCH'
572 submodule-recursive: '{submodule-recursive}'
573 choosing-strategy: gerrit
574 jenkins-ssh-credential: '{jenkins-ssh-credential}'
578 server-name: '{gerrit-server-name}'
579 trigger-on: '{obj:gerrit_verify_triggers}'
581 - project-compare-type: ANT
582 project-pattern: '{project}'
584 - branch-compare-type: ANT
585 branch-pattern: '**/{branch}'
586 <<: *lf_packer_file_paths
589 name: '{project-name}-packer-verify'
590 id: github-packer-verify
593 # yamllint disable-line rule:key-duplicates
594 <<: *lf_packer_common
595 # yamllint disable-line rule:key-duplicates
596 <<: *lf_packer_verify_builders
598 ######################
599 # Default parameters #
600 ######################
604 #####################
605 # Job Configuration #
606 #####################
610 url: '{git-url}/{github-org}/{project}'
613 - lf-infra-github-scm:
614 url: '{git-clone-url}{github-org}/{project}'
615 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
617 submodule-recursive: '{submodule-recursive}'
618 choosing-strategy: default
619 jenkins-ssh-credential: '{jenkins-ssh-credential}'
622 - lf-infra-github-pr-trigger:
623 trigger-phrase: '^recheck$'
624 only-trigger-phrase: false
625 status-context: 'Packer Verify'
631 github_pr_admin_list: