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 pattern: '**/global-jjb'
137 #####################
138 # Job Configuration #
139 #####################
141 project-type: freestyle
145 - lf-infra-properties:
147 build-days-to-keep: 7
150 - lf-infra-parameters:
154 - lf-infra-jjb-parameters:
155 jjb-version: '{jjb-version}'
159 build-timeout: '{build-timeout}'
160 jenkins-ssh-credential: '{jenkins-ssh-credential}'
169 - lf_jjb_merge: &lf_jjb_merge
172 # JJB Merge job runs `jenkins-jobs update` to update production job configuration
174 # Required parameters:
176 # :build-node: The node to run build on.
177 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
178 # be configured in defaults.yaml)
179 # :mvn-settings: The name of settings file containing credentials for
182 # Optional parameters:
184 # :branch: Git branch to fetch for the build. (default: master)
185 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
186 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
187 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
188 # :stream: Keyword that can be used to represent a release code-name.
189 # Often the same as the branch. (default: master)
190 # :submodule-recursive: Whether to checkout submodules recursively.
193 # :gerrit_merge_triggers: Override Gerrit Triggers.
194 # :gerrit_trigger_file_paths: Override file paths which can be used to
195 # filter which file modifications will trigger a build.
196 # (default defined by lf_jjb_common)
198 ######################
199 # Default parameters #
200 ######################
202 gerrit_merge_triggers:
203 - change-merged-event
204 - comment-added-contains-event:
205 comment-contains-value: remerge$
207 #####################
208 # Job Configuration #
209 #####################
213 - shell: !include-raw-escape:
214 - ../shell/jjb-install.sh
215 - ../shell/jjb-merge-job.sh
218 name: '{project-name}-jjb-merge'
221 # yamllint disable-line rule:key-duplicates
224 git-url: '$GIT_URL/$GERRIT_PROJECT'
227 - lf-infra-gerrit-scm:
231 submodule-recursive: '{submodule-recursive}'
232 choosing-strategy: default
233 jenkins-ssh-credential: '{jenkins-ssh-credential}'
237 server-name: '{gerrit-server-name}'
238 trigger-on: '{obj:gerrit_merge_triggers}'
240 - project-compare-type: ANT
241 project-pattern: '{project}'
243 - branch-compare-type: ANT
244 branch-pattern: '**/{branch}'
245 file-paths: '{obj:gerrit_trigger_file_paths}'
248 name: '{project-name}-jjb-merge'
251 # yamllint disable-line rule:key-duplicates
256 url: '{git-url}/{github-org}/{project}'
259 - lf-infra-github-scm:
260 url: '{git-clone-url}{github-org}/{project}'
263 submodule-recursive: '{submodule-recursive}'
264 choosing-strategy: default
265 jenkins-ssh-credential: '{jenkins-ssh-credential}'
271 - lf-infra-github-pr-trigger:
272 trigger-phrase: '^remerge$'
273 only-trigger-phrase: true
274 status-context: 'JJB Merge'
277 github-org: '{github-org}'
278 github_pr_whitelist: '{obj:github_pr_whitelist}'
279 github_pr_admin_list: '{obj:github_pr_admin_list}'
285 - lf_jjb_verify: &lf_jjb_verify
288 # JJB Verify job runs `jenkins-jobs test` to validate JJB syntax
290 # Required parameters:
292 # :build-node: The node to run build on.
293 # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
294 # be configured in defaults.yaml)
295 # :mvn-settings: The name of settings file containing credentials for
298 # Optional parameters:
300 # :branch: Git branch to fetch for the build. (default: master)
301 # :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
302 # :build-timeout: Timeout in seconds before aborting build. (default: 10)
303 # :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
304 # :stream: Keyword that can be used to represent a release code-name.
305 # Often the same as the branch. (default: master)
306 # :submodule-recursive: Whether to checkout submodules recursively.
309 # :gerrit_verify_triggers: Override Gerrit Triggers.
310 # :gerrit_trigger_file_paths: Override file paths which can be used to
311 # filter which file modifications will trigger a build.
312 # (default defined by lf_jjb_common)
314 ######################
315 # Default parameters #
316 ######################
318 gerrit_verify_triggers:
319 - patchset-created-event:
320 exclude-drafts: false
321 exclude-trivial-rebase: false
322 exclude-no-code-change: false
323 - draft-published-event
324 - comment-added-contains-event:
325 comment-contains-value: recheck$
327 #####################
328 # Job Configuration #
329 #####################
335 - shell: !include-raw-escape:
336 - ../shell/git-validate-jira-urls.sh
337 - ../shell/jjb-install.sh
338 - ../shell/jjb-verify-job.sh
339 - ../shell/jjb-check-unicode.sh
340 - lf-infra-gpg-verify-git-signature
343 name: '{project-name}-jjb-verify'
344 id: gerrit-jjb-verify
346 # yamllint disable-line rule:key-duplicates
349 git-url: '$GIT_URL/$GERRIT_PROJECT'
352 - lf-infra-gerrit-scm:
354 refspec: '$GERRIT_REFSPEC'
355 branch: '$GERRIT_BRANCH'
356 submodule-recursive: '{submodule-recursive}'
357 choosing-strategy: gerrit
358 jenkins-ssh-credential: '{jenkins-ssh-credential}'
362 server-name: '{gerrit-server-name}'
363 trigger-on: '{obj:gerrit_verify_triggers}'
365 - project-compare-type: ANT
366 project-pattern: '{project}'
368 - branch-compare-type: ANT
369 branch-pattern: '**/{branch}'
370 file-paths: '{obj:gerrit_trigger_file_paths}'
373 name: '{project-name}-jjb-verify'
374 id: github-jjb-verify
376 # yamllint disable-line rule:key-duplicates
381 url: '{git-url}/{github-org}/{project}'
384 - lf-infra-github-scm:
385 url: '{git-clone-url}{github-org}/{project}'
386 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
388 submodule-recursive: '{submodule-recursive}'
389 choosing-strategy: default
390 jenkins-ssh-credential: '{jenkins-ssh-credential}'
393 - lf-infra-github-pr-trigger:
394 trigger-phrase: '^recheck$'
395 only-trigger-phrase: false
396 status-context: 'JJB Verify'
402 github_pr_admin_list:
409 - lf_packer_merge_builders: &lf_packer_merge_builders
410 name: lf-packer-merge-builders
412 # Adds builders section common to merge packer jobs.
413 # {packer-cloud-settings} is passed from the project, defines the managed
414 # file-id name created in Jenkins
415 # (default: packer-cloud-env)
416 # {packer-version}: is global defined in job group level, the version number
417 # can be updated to install the latest version of packer.
418 # {platforms}: defines the packer platform file, passed from the project.
419 # {template}: defines the packer template file, passed from the project.
422 - lf-infra-packer-validate:
423 packer-cloud-settings: '{packer-cloud-settings}'
424 packer-version: '{packer-version}'
425 - lf-infra-packer-build:
426 packer-cloud-settings: '{packer-cloud-settings}'
427 packer-version: '{packer-version}'
428 platform: '{platforms}'
429 template: '{templates}'
432 name: '{project-name}-packer-merge-{platforms}-{templates}'
433 id: gerrit-packer-merge
436 # yamllint disable-line rule:key-duplicates
437 <<: *lf_packer_common
438 # yamllint disable-line rule:key-duplicates
439 <<: *lf_packer_merge_builders
441 ######################
442 # Default parameters #
443 ######################
445 git-url: '$GIT_URL/$GERRIT_PROJECT'
447 gerrit_merge_triggers:
448 - change-merged-event
449 - comment-added-contains-event:
450 comment-contains-value: remerge$
452 #####################
453 # Job Configuration #
454 #####################
457 - lf-infra-gerrit-scm:
459 refspec: '$GERRIT_REFSPEC'
460 branch: '$GERRIT_BRANCH'
461 submodule-recursive: '{submodule-recursive}'
462 choosing-strategy: gerrit
463 jenkins-ssh-credential: '{jenkins-ssh-credential}'
466 - timed: '00 10 1 * *'
468 server-name: '{gerrit-server-name}'
469 trigger-on: '{obj:gerrit_merge_triggers}'
471 - project-compare-type: ANT
472 project-pattern: '{project}'
474 - branch-compare-type: ANT
475 branch-pattern: '**/{branch}'
476 <<: *lf_packer_file_paths
479 name: '{project-name}-packer-merge-{platforms}-{templates}'
480 id: github-packer-merge
483 # yamllint disable-line rule:key-duplicates
484 <<: *lf_packer_common
485 # yamllint disable-line rule:key-duplicates
486 <<: *lf_packer_merge_builders
488 #####################
489 # Job Configuration #
490 #####################
494 url: '{git-url}/{github-org}/{project}'
497 - lf-infra-github-scm:
498 url: '{git-clone-url}{github-org}/{project}'
501 submodule-recursive: '{submodule-recursive}'
502 choosing-strategy: default
503 jenkins-ssh-credential: '{jenkins-ssh-credential}'
506 - timed: '00 10 1 * *'
510 - lf-infra-github-pr-trigger:
511 trigger-phrase: '^remerge$'
512 only-trigger-phrase: true
513 status-context: 'Packer {platforms}-${templates} Merge'
516 github-org: '{github-org}'
517 github_pr_whitelist: '{obj:github_pr_whitelist}'
518 github_pr_admin_list: '{obj:github_pr_admin_list}'
524 - lf_packer_verify_builders: &lf_packer_verify_builders
525 name: lf-packer-verify-builders
527 # Adds builders section common to verify packer jobs.
528 # {packer-cloud-settings} is passed from the project, defines the managed
529 # file-id name created in Jenkins
530 # (default: packer-cloud-env)
531 # {packer-version}: is global defined in job group level, the version number
532 # can be updated to install the latest version of packer.
535 - lf-infra-packer-validate:
536 packer-cloud-settings: '{packer-cloud-settings}'
537 packer-version: '{packer-version}'
540 name: '{project-name}-packer-verify'
541 id: gerrit-packer-verify
544 # yamllint disable-line rule:key-duplicates
545 <<: *lf_packer_common
546 # yamllint disable-line rule:key-duplicates
547 <<: *lf_packer_verify_builders
549 ######################
550 # Default parameters #
551 ######################
554 git-url: '$GIT_URL/$GERRIT_PROJECT'
556 gerrit_verify_triggers:
557 - patchset-created-event:
558 exclude-drafts: false
559 exclude-trivial-rebase: false
560 exclude-no-code-change: false
561 - draft-published-event
562 - comment-added-contains-event:
563 comment-contains-value: recheck$
565 #####################
566 # Job Configuration #
567 #####################
570 - lf-infra-gerrit-scm:
572 refspec: '$GERRIT_REFSPEC'
573 branch: '$GERRIT_BRANCH'
574 submodule-recursive: '{submodule-recursive}'
575 choosing-strategy: gerrit
576 jenkins-ssh-credential: '{jenkins-ssh-credential}'
580 server-name: '{gerrit-server-name}'
581 trigger-on: '{obj:gerrit_verify_triggers}'
583 - project-compare-type: ANT
584 project-pattern: '{project}'
586 - branch-compare-type: ANT
587 branch-pattern: '**/{branch}'
588 <<: *lf_packer_file_paths
591 name: '{project-name}-packer-verify'
592 id: github-packer-verify
595 # yamllint disable-line rule:key-duplicates
596 <<: *lf_packer_common
597 # yamllint disable-line rule:key-duplicates
598 <<: *lf_packer_verify_builders
600 ######################
601 # Default parameters #
602 ######################
606 #####################
607 # Job Configuration #
608 #####################
612 url: '{git-url}/{github-org}/{project}'
615 - lf-infra-github-scm:
616 url: '{git-clone-url}{github-org}/{project}'
617 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
619 submodule-recursive: '{submodule-recursive}'
620 choosing-strategy: default
621 jenkins-ssh-credential: '{jenkins-ssh-credential}'
624 - lf-infra-github-pr-trigger:
625 trigger-phrase: '^recheck$'
626 only-trigger-phrase: false
627 status-context: 'Packer Verify'
633 github_pr_admin_list: