ffbbedc31da4f18d9478b5acafd92a8e2cccaf34
[releng/global-jjb.git] / docs / jjb / lf-maven-jobs.rst
1 ##########
2 Maven Jobs
3 ##########
4
5 Job Groups
6 ==========
7
8 .. include:: ../job-groups.rst
9
10 Below is a list of Maven job groups:
11
12 .. literalinclude:: ../../jjb/lf-maven-job-groups.yaml
13    :language: yaml
14
15
16 Macros
17 ======
18
19 lf-infra-maven-sonar
20 --------------------
21
22 Runs Sonar against a Maven project.
23
24 :Required Parameters:
25
26     :java-version: Version of Java to execute Sonar with.
27     :mvn-version: Version of Maven to execute Sonar with.
28     :mvn-settings: Maven settings.xml file containing credentials to use.
29
30 lf-infra-maven-sonarcloud
31 -------------------------
32
33 Runs Sonar against a Maven project and pushes results to SonarCloud.
34
35 :Required Parameters:
36
37     :java-version: Version of Java to execute Maven build. (default: openjdk8)
38     :mvn-version: Version of Maven to execute Sonar with.
39     :mvn-settings: Maven settings.xml file containing credentials to use.
40     :sonarcloud-project-key: SonarCloud project key.
41     :sonarcloud-project-organization: SonarCloud project organization.
42     :sonarcloud-api-token: SonarCloud API Token.
43     :sonarcloud-java-version: Version of Java to run the Sonar scan.
44
45 lf-maven-build
46 --------------
47
48 Calls the maven build script to perform a maven build.
49
50 :Required parameters:
51
52     :mvn-goals: The maven goals to perform for the build.
53         (default: clean deploy)
54
55 lf-maven-common
56 ---------------
57
58 Common Jenkins configuration for Maven jobs.
59
60 lf-maven-deploy
61 ---------------
62
63 Calls the maven deploy script to push artifacts to Nexus.
64
65 lf-maven-versions-plugin
66 ------------------------
67
68 Conditionally calls Maven versions plugin to set, update and commit the maven `versions:set`.
69
70 :Required Parameters:
71
72     :maven-versions-plugin: Whether to call Maven versions plugin or not. (default: false)
73     :version-properties-file: Name and path of the version properties file.
74         (default: version.properties)
75     :mvn-version: Version of Maven to execute Sonar with.
76     :mvn-pom: Location of pom.xml.
77     :mvn-settings: Maven settings.xml file containing credentials to use.
78
79 lf-maven-stage
80 --------------
81
82 Calls the maven stage script to push artifacts to a Nexus staging repository.
83
84 :Required Parameters:
85
86     :mvn-global-settings: The name of the Maven global settings to use for
87         Maven configuration.
88     :mvn-settings: The name of settings file containing credentials for the project.
89
90 lf-update-java-alternatives
91 ---------------------------
92
93 Setup Java alternatives for the Distro.
94
95 :Required Parameters:
96
97     :java-version: Version of Java to set as the default Java.
98         Eg. openjdk8
99
100 lf-infra-sonatype-clm
101 ---------------------
102
103 Runs a Sonatype CLM scan against a Maven project and pushes results to
104 Nexus IQ server.
105
106 :Optional parameters:
107     :mvn-goals: The maven goals to perform for the build.
108         (default: clean install)
109
110 Job Templates
111 =============
112
113 Maven CLM
114 ---------
115
116 Produces a CLM scan of the code into Nexus IQ Server.
117
118 :Template Names:
119
120     - {project-name}-maven-clm-{stream}
121     - gerrit-maven-clm
122     - github-maven-clm
123
124 :Comment Trigger: run-clm
125
126 :Required parameters:
127
128     :build-node:    The node to run build on.
129     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
130     :mvn-settings: The name of settings file containing credentials for the project.
131
132 :Optional parameters:
133
134     :branch: The branch to build against. (default: master)
135     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
136     :build-timeout: Timeout in minutes before aborting build. (default: 60)
137     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
138     :java-version: Version of Java to use for the build. (default: openjdk8)
139     :mvn-global-settings: The name of the Maven global settings to use for
140         Maven configuration. (default: global-settings)
141     :mvn-goals: The maven goals to perform for the build.
142         (default: clean install)
143     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
144     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
145     :mvn-version: Version of maven to use. (default: mvn35)
146     :nexus-iq-namespace: Insert a namespace to project AppID for projects that
147         share a Nexus IQ system to avoid project name collision. We recommend
148         inserting a trailing - dash if using this parameter.
149         For example 'odl-'. (default: '')
150     :nexus-iq-stage: Sets the **stage** which the policy evaluation will run
151         against on the Nexus IQ Server. (default: 'build')
152     :stream: Keyword that represents a release code-name.
153         Often the same as the branch. (default: master)
154     :submodule-recursive: Whether to checkout submodules recursively.
155         (default: true)
156     :submodule-timeout: Timeout (in minutes) for checkout operation.
157         (default: 10)
158     :submodule-disable: Disable submodule checkout operation.
159         (default: false)
160
161     :gerrit_merge_triggers: Override Gerrit Triggers.
162
163 Maven JavaDoc Publish
164 ---------------------
165
166 Produces and publishes javadocs for a Maven project.
167
168 Expects javadocs to be available in ``$WORKSPACE/target/site/apidocs``, but
169 overrideable with the ``mvn-dir`` parameter. If set, will search for javadocs
170 in ``$WORKSPACE/{mvn-dir}/target/site/apidocs``.
171
172 :Template Names:
173
174     - {project-name}-maven-javadoc-publish-{stream}-{java-version}
175     - gerrit-maven-javadoc-publish
176     - github-maven-javadoc-publish
177
178 :Comment Trigger: remerge
179
180 :Required parameters:
181
182     :build-node: The node to run build on.
183     :javadoc-path: The path in Nexus to deploy javadoc to.
184     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
185     :mvn-settings: The name of settings file containing credentials for the project.
186     :mvn-site-id: Maven Server ID from settings.xml to pull credentials from.
187         (Note: This setting is generally configured in ``defaults.yaml``.)
188
189 :Optional parameters:
190
191     :branch: The branch to build against. (default: master)
192     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
193     :build-timeout: Timeout in minutes before aborting build. (default: 60)
194     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
195     :java-version: Version of Java to use for the build. (default: openjdk8)
196     :mvn-dir: Directory supplied as argument to -f option (default: '.')
197     :mvn-global-settings: The name of the Maven global settings to use for
198         Maven configuration. (default: global-settings)
199     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
200     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
201         Must not include a "-f" option; see parameter mvn-dir.
202     :mvn-version: Version of maven to use. (default: mvn35)
203     :stream: Keyword that represents a release code-name.
204         Often the same as the branch. (default: master)
205     :submodule-recursive: Whether to checkout submodules recursively.
206         (default: true)
207     :submodule-timeout: Timeout (in minutes) for checkout operation.
208         (default: 10)
209     :submodule-disable: Disable submodule checkout operation.
210         (default: false)
211
212     :gerrit_merge_triggers: Override Gerrit Triggers.
213
214 Maven JavaDoc Verify
215 --------------------
216
217 Produces javadocs for a Maven project.
218
219 Expects javadocs to be available in ``$WORKSPACE/target/site/apidocs``, but
220 overrideable with the ``mvn-dir`` parameter. If set, will search for javadocs
221 in ``$WORKSPACE/{mvn-dir}/target/site/apidocs``.
222
223 :Template Names:
224
225     - {project-name}-maven-javadoc-verify-{stream}-{java-version}
226     - gerrit-maven-javadoc-verify
227     - github-maven-javadoc-verify
228
229 :Comment Trigger: recheck|reverify
230
231 :Required parameters:
232     :build-node:    The node to run build on.
233     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
234     :mvn-settings: The name of settings file containing credentials for the project.
235
236 :Optional parameters:
237
238     :branch: The branch to build against. (default: master)
239     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
240     :build-timeout: Timeout in minutes before aborting build. (default: 60)
241     :deploy-path:    The path in Nexus to deploy javadoc to. (default: $PROJECT/$STREAM)
242     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
243     :java-version: Version of Java to use for the build. (default: openjdk8)
244     :mvn-dir: Directory supplied as argument to -f option (default: '.')
245     :mvn-global-settings: The name of the Maven global settings to use for
246         Maven configuration. (default: global-settings)
247     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
248     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
249         Must not include a "-f" option; see parameter mvn-dir.
250     :mvn-version: Version of maven to use. (default: mvn35)
251     :stream: Keyword that represents a release code-name.
252         Often the same as the branch. (default: master)
253     :submodule-recursive: Whether to checkout submodules recursively.
254         (default: true)
255     :submodule-timeout: Timeout (in minutes) for checkout operation.
256         (default: 10)
257     :submodule-disable: Disable submodule checkout operation.
258         (default: false)
259
260     :gerrit_verify_triggers: Override Gerrit Triggers.
261
262 Maven Merge
263 -----------
264
265 Merge job which runs `mvn clean deploy` to build a project.
266
267 This job pushes files to Nexus using cURL instead of allowing the Maven deploy
268 goal to push the upload. This is to get around the issue that Maven deploy does
269 not properly support uploading files at the end of the build and instead pushes
270 as it goes. There exists a ``-Ddeploy-at-end`` feature but it does not work
271 with extensions.
272
273 This job uses the following strategy to deploy jobs to Nexus:
274
275 1. ``wget -r`` to fetch maven-metadata.xml from Nexus
276 2. ``mvn deploy -DaltDeploymentRepository`` to prepare files for upload
277 3. Removes untouched maven-metadata.xml files before upload
278 4. Use lftools (cURL) upload script to push artifacts to Nexus
279
280 :Template Names:
281
282     - {project-name}-maven-merge-{stream}
283     - gerrit-maven-merge
284     - github-maven-merge
285
286 :Comment Trigger: remerge
287
288 :Required parameters:
289
290     :build-node: The node to run build on.
291     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
292     :mvn-settings: The name of settings file containing credentials for the project.
293     :mvn-snapshot-id: Maven Server ID from settings.xml to pull credentials from.
294         (Note: This setting is generally configured in ``defaults.yaml``.)
295     :nexus-snapshot-repo: The repository id of the Nexus snapshot repo to deploy to.
296
297 :Optional parameters:
298
299     :branch: Git branch to fetch for the build. (default: master)
300     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
301     :build-timeout: Timeout in minutes before aborting build. (default: 60)
302     :cron: Cron schedule when to trigger the job. This parameter also
303         supports multiline input via YAML pipe | character in cases where
304         one may want to provide more than 1 cron timer. (default: 'H H * * 0'
305         to run weekly)
306     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
307     :java-version: Version of Java to use for the build. (default: openjdk8)
308     :mvn-global-settings: The name of the Maven global settings to use for
309         Maven configuration. (default: global-settings)
310     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
311     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
312     :mvn-version: Version of maven to use. (default: mvn35)
313     :nexus-cut-dirs: Number of directories to cut from file path for `wget -r`.
314     :stream: Keyword that represents a release code-name.
315         Often the same as the branch. (default: master)
316     :submodule-recursive: Whether to checkout submodules recursively.
317         (default: true)
318     :submodule-timeout: Timeout (in minutes) for checkout operation.
319         (default: 10)
320     :submodule-disable: Disable submodule checkout operation.
321         (default: false)
322
323     :gerrit_merge_triggers: Override Gerrit Triggers.
324     :gerrit_trigger_file_paths: Override file paths to filter which file
325         modifications will trigger a build.
326
327 Maven Merge for Docker
328 ----------------------
329
330 Produces a snapshot docker image in a Nexus registry. Appropriate for
331 Java projects that do not need to deploy any POM or JAR files.
332
333 Like the Maven Merge job as described above but logs in to Docker
334 registries first and skips the lf-maven-deploy builder. The project
335 POM file should invoke a plugin to build and push a Docker image.
336 This pulls the base image from the registry in the environment
337 variable ``CONTAINER_PULL_REGISTRY`` and pushes new image into the
338 registry in the environment variable ``CONTAINER_PUSH_REGISTRY``.
339
340 :Template Names:
341
342     - {project-name}-maven-docker-merge-{stream}
343     - gerrit-maven-docker-merge
344     - github-maven-docker-merge
345
346 :Required parameters:
347
348     :container-public-registry: Docker registry source with base images.
349     :container-snapshot-registry: Docker registry target for the deploy action.
350
351 All other required and optional parameters are identical to the Maven Merge job
352 described above.
353
354 Maven Stage
355 -----------
356
357 Produces a release candidate by creating a staging repo in Nexus.
358
359 The staging repo name is in the format PROJECT-NUMBER for example "aaa-1234",
360 "autorelease-2000", "odlparent-1201", etc...
361
362 This job runs a Maven build and deploys to $WORKSPACE/m2repo directory. This
363 directory is then used later to deploy to Nexus.
364
365 :Template Names:
366
367     - {project-name}-maven-stage-{stream}
368     - gerrit-maven-stage
369     - github-maven-stage
370
371 :Comment Trigger: "stage-release" or "stage-maven-release"
372
373 :Required parameters:
374
375     :build-node: The node to run build on.
376     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
377     :mvn-settings: The name of settings file containing credentials for the project.
378     :mvn-staging-id: Maven Server ID from settings.xml to pull credentials from.
379         (Note: This setting is generally configured in ``defaults.yaml``.)
380     :staging-profile-id: Profile ID of the project's Nexus staging profile.
381
382 :Optional parameters:
383
384     :archive-artifacts: Artifacts to archive to the logs server (default: '').
385     :branch: The branch to build against. (default: master)
386     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
387     :build-timeout: Timeout in minutes before aborting build. (default: 60)
388     :cron: Cron schedule when to trigger the job. This parameter also
389         supports multiline input via YAML pipe | character in cases where
390         one may want to provide more than 1 cron timer. (default: '')
391     :deploy-path:    The path in Nexus to deploy javadoc to. (default: $PROJECT/$STREAM)
392     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
393     :java-version: Version of Java to use for the build. (default: openjdk8)
394     :mvn-central: Set to ``true`` to also stage to **OSSRH**. This is for projects
395         that want to release to Maven Central. If set, then also set the parameter
396         ``ossrh-profile-id``. (default: false)
397     :maven-versions-plugin: Whether to call Maven versions plugin or not. (default: false)
398     :mvn-global-settings: The name of the Maven global settings to use for
399         Maven configuration. (default: global-settings)
400     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
401     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
402     :mvn-version: Version of maven to use. (default: mvn35)
403     :ossrh-profile-id: Profile ID for project as provided by OSSRH.
404         (default: '')
405     :sign-artifacts: Sign artifacts with Sigul. (default: false)
406     :stream: Keyword that represents a release code-name.
407         Often the same as the branch. (default: master)
408     :submodule-recursive: Whether to checkout submodules recursively.
409         (default: true)
410     :submodule-timeout: Timeout (in minutes) for checkout operation.
411         (default: 10)
412     :submodule-disable: Disable submodule checkout operation.
413         (default: false)
414     :version-properties-file: Name and path of the version properties file.
415         (default: version.properties)
416
417     :gerrit_release_triggers: Override Gerrit Triggers.
418     :gerrit_trigger_file_paths: Override file paths to filter which file
419         modifications will trigger a build.
420
421 Maven Stage for Docker
422 ----------------------
423
424 Produces a release candidate docker image in a Nexus registry.
425 Appropriate for Java projects that do not need to deploy any POM or
426 JAR files.
427
428 Like the Maven Stage job as described above but logs in to Docker
429 registries first and skips the lf-maven-deploy builder. The project
430 POM file should invoke a plugin to build and push a Docker image.
431 This pulls the base image from the registry in the environment
432 variable ``CONTAINER_PULL_REGISTRY`` and pushes new image into the
433 registry in the environment variable ``CONTAINER_PUSH_REGISTRY``.
434
435 :Template Names:
436
437     - {project-name}-maven-docker-stage-{stream}
438     - gerrit-maven-docker-stage
439     - github-maven-docker-stage
440
441 :Comment Trigger: "stage-release" or "stage-docker-release"
442
443 :Required parameters:
444
445     :container-public-registry: Docker registry source with base images.
446     :container-staging-registry: Docker registry target for the deploy action.
447
448 :Optional parameters:
449
450     :gerrit_release_docker_triggers: Override Gerrit Triggers.
451
452 All other required and optional parameters are identical to the Maven Stage job
453 described above.
454
455 .. _maven-sonar:
456
457 Maven Sonar
458 -----------
459
460 Sonar job which runs mvn clean install then publishes to Sonar.
461
462 This job purposely runs on the ``master`` branch and does not support
463 multi-branch configuration.
464
465 :Template Names:
466
467     - {project-name}-sonar
468     - gerrit-maven-sonar
469     - github-maven-sonar
470     - {project-name}-sonar-prescan-script
471     - gerrit-maven-sonar-prescan-script
472     - github-maven-sonar-prescan-script
473
474 :Comment Trigger: run-sonar
475
476 :Required parameters:
477
478     :build-node: The node to run build on.
479     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
480     :mvn-settings: The name of settings file containing credentials for the project.
481     :sonar-prescan-script: (maven-sonar-prescan-script jobs) A shell script to run before
482         sonar scans.
483
484 :Optional parameters:
485
486     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
487     :build-timeout: Timeout in minutes before aborting build. (default: 60)
488     :cron: Cron schedule when to trigger the job. This parameter also
489         supports multiline input via YAML pipe | character in cases where
490         one may want to provide more than 1 cron timer.  (default: 'H H * * 6'
491         to run weekly)
492     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
493     :java-version: Version of Java to use for the Maven build. (default: openjdk8)
494     :mvn-global-settings: The name of the Maven global settings to use for
495         Maven configuration. (default: global-settings)
496     :mvn-goals: The maven goals to perform for the build.
497         (default: clean install)
498     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
499     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
500     :mvn-version: Version of maven to use. (default: mvn35)
501     :sonar-mvn-goals: Maven goals to run for sonar analysis.
502         (default: sonar:sonar)
503     :sonarcloud: Set to ``true`` to use SonarCloud ``true|false``.
504         (default: false)
505     :sonarcloud-project-key: SonarCloud project key. (default: '')
506     :sonarcloud-project-organization: SonarCloud project organization.
507         (default: '')
508     :sonarcloud-api-token: SonarCloud API Token. (default: '')
509     :sonarcloud-java-version: Version of Java to use for the Sonar scan. (default: openjdk11)
510     :stream: Keyword that represents a release code-name.
511         Often the same as the branch. (default: master)
512     :submodule-recursive: Whether to checkout submodules recursively.
513         (default: true)
514     :submodule-timeout: Timeout (in minutes) for checkout operation.
515         (default: 10)
516     :submodule-disable: Disable submodule checkout operation.
517         (default: false)
518     :scan-dev-branch: Run the scan on a developer branch.
519         (default: false)
520
521     :gerrit_sonar_triggers: Override Gerrit Triggers.
522
523
524 SonarCloud Example:
525
526 .. literalinclude:: ../../.jjb-test/lf-maven-jobs/maven-sonarcloud.yaml
527    :language: yaml
528
529 Maven Verify
530 ------------
531
532 Verify job which runs mvn clean install to test a project build..
533
534 :Template Names:
535
536     - {project-name}-maven-verify-{stream}-{mvn-version}-{java-version}
537     - gerrit-maven-verify
538     - github-maven-verify
539
540 :Comment Trigger: recheck|reverify
541
542 :Required parameters:
543
544     :build-node: The node to run build on.
545     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
546     :mvn-settings: The name of settings file containing credentials for the project.
547
548 :Optional parameters:
549
550     :branch: Git branch to fetch for the build. (default: master)
551     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
552     :build-timeout: Timeout in minutes before aborting build. (default: 60)
553     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
554     :java-version: Version of Java to use for the build. (default: openjdk8)
555     :mvn-global-settings: The name of the Maven global settings to use for
556         Maven configuration. (default: global-settings)
557     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
558     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
559     :mvn-version: Version of maven to use. (default: mvn35)
560     :stream: Keyword that represents a release code-name.
561         Often the same as the branch. (default: master)
562     :submodule-recursive: Whether to checkout submodules recursively.
563         (default: true)
564     :submodule-timeout: Timeout (in minutes) for checkout operation.
565         (default: 10)
566     :submodule-disable: Disable submodule checkout operation.
567         (default: false)
568
569     :gerrit_verify_triggers: Override Gerrit Triggers.
570     :gerrit_trigger_file_paths: Override file paths to filter which file
571         modifications will trigger a build.
572
573 Maven Verify for Docker
574 -----------------------
575
576 Like the Maven Verify job as described above but logs in to Docker
577 registries first. The project POM file should invoke a plugin to build
578 a Docker image. This pulls the base image from the registry in the environment
579 variable ``CONTAINER_PULL_REGISTRY``.
580
581 :Template Names:
582
583     - {project-name}-maven-docker-verify-{stream}-{mvn-version}-{java-version}
584     - gerrit-maven-docker-verify
585     - github-maven-docker-verify
586
587 :Required parameters:
588
589     :container-public-registry: Docker registry source with base images.
590
591 All other required and optional parameters are identical to the Maven Verify job
592 described above.
593
594 Maven Verify w/ Dependencies
595 ----------------------------
596
597 Verify job which runs mvn clean install to test a project build /w deps
598
599 This job's purpose is to verify a patch in conjunction to a list of upstream
600 patches it depends on. The user of this job can provide a list of patches via
601 comment trigger.
602
603 :Template Names:
604
605     - {project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}
606     - gerrit-maven-verify-dependencies
607
608 :Comment Trigger: recheck: SPACE_SEPARATED_LIST_OF_PATCHES
609
610 :Required parameters:
611
612     :build-node: The node to run build on.
613     :jenkins-ssh-credential: Credential to use for SSH. (Generally configured in defaults.yaml)
614     :mvn-settings: The name of settings file containing credentials for the project.
615
616 :Optional parameters:
617
618     :branch: Git branch to fetch for the build. (default: master)
619     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
620     :build-timeout: Timeout in minutes before aborting build. (default: 60)
621     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
622     :java-version: Version of Java to use for the build. (default: openjdk8)
623     :mvn-global-settings: The name of the Maven global settings to use for
624         Maven configuration. (default: global-settings)
625     :mvn-opts: Sets MAVEN_OPTS to start up the JVM running Maven. (default: '')
626     :mvn-params: Parameters to pass to the mvn CLI. (default: '')
627     :mvn-version: Version of maven to use. (default: mvn35)
628     :stream: Keyword that represents a release code-name.
629         Often the same as the branch. (default: master)
630     :submodule-recursive: Whether to checkout submodules recursively.
631         (default: true)
632     :submodule-timeout: Timeout (in minutes) for checkout operation.
633         (default: 10)
634     :submodule-disable: Disable submodule checkout operation.
635         (default: false)
636
637     :gerrit_verify_triggers: Override Gerrit Triggers.
638     :gerrit_trigger_file_paths: Override file paths to filter which file
639         modifications will trigger a build.