Merge "Allow image protection script to be disabled"
[releng/global-jjb.git] / docs / jjb / lf-ci-jobs.rst
1 #######
2 CI Jobs
3 #######
4
5 Job Groups
6 ==========
7
8 .. include:: ../job-groups.rst
9
10 Below is a list of CI job groups:
11
12 .. literalinclude:: ../../jjb/lf-ci-job-groups.yaml
13    :language: yaml
14
15
16 Macros
17 ======
18
19 lf-infra-jjb-parameters
20 -----------------------
21
22 :Required Parameters:
23
24     :jjb-version: Version of Jenkins Job Builder (JJB) to install and use in
25         the jjb jobs.
26
27 lf-jenkins-cfg-clouds
28 ---------------------
29
30 Deploys Jenkins Cloud configuration read from the ``jenkins-clouds`` directory
31 in ci-management repositories.
32
33 .. note::
34
35    Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style
36    config definitions for "production" and "sandbox" systems.
37
38 :Required Parameters:
39
40     :jenkins-silos: Space-separated list of Jenkins silos to update
41         configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini
42
43 lf-jenkins-cfg-global-vars
44 --------------------------
45
46 Manages the Global Jenkins variables. This macro will clear all exist macros
47 in Jenkins and replaces them with the ones defined by the
48 ci-management/jenkins-config/global-vars-SILO.sh script.
49
50 .. note::
51
52    Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style
53    config definitions for "production" and "sandbox" systems.
54
55 :Required parameters:
56
57     :jenkins-silos: Space-separated list of Jenkins silos to update
58         configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini
59
60 lf-infra-jjbini
61 ---------------
62
63 Provides jenkins_jobs.ini configuration for Jenkins.
64
65 lf-infra-jjbini-sandbox
66 -----------------------
67
68 Provides jenkins_jobs.ini configuration for Jenkins sandbox.
69
70 .. todo:: This needs to be consolidated into lf-infra-jjbini when JJB 2.0 is available
71
72 lf-packer-common
73 ----------------
74
75 Common packer configuration.
76
77 lf-packer-file-paths
78 --------------------
79
80 Gerrit file-paths for packer jobs.
81
82 lf-packer-parameters
83 --------------------
84
85 Parameters useful for packer related tasks.
86
87 :Parameters:
88
89     :packer-version: Version of packer to install / use.
90         (shell: PACKER_VERSION)
91
92 lf-packer-verify-file-paths
93 ---------------------------
94
95 Gerrit file-paths for packer verify jobs.
96
97 Job Templates
98 =============
99
100 .. _gerrit-branch-lock:
101
102 Gerrit Branch Lock
103 ------------------
104
105 Job submits a patch to lock or unlock a project's branch.
106
107 :Template Names:
108     - {project-name}-gerrit-branch-lock-{stream}
109     - gerrit-branch-lock
110
111 :Comment Trigger:
112
113     * lock branch
114     * unlock branch
115
116 :Required parameters:
117
118     :build-node: The node to run build on.
119     :jenkins-ssh-credential: Credential to use for SSH. (Generally
120         should be configured in defaults.yaml)
121
122 :Optional parameters:
123
124     :branch: Git branch to build against. (default: master)
125     :git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
126     :stream: Keyword that can be used to represent a release code-name.
127         Often the same as the branch. (default: master)
128     :submodule-timeout: Timeout (in minutes) for checkout operation.
129         (default: 10)
130     :gerrit_merge_triggers: Override Gerrit Triggers.
131
132 .. _lf-global-jjb-jenkins-cfg-merge:
133
134 Jenkins Configuration Merge
135 ---------------------------
136
137 Jenkins job to manage Global Jenkins configuration.
138
139 .. note::
140
141    Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style
142    config definitions for "production" and "sandbox" systems.
143
144 :Template names:
145
146     - {project-name}-jenkins-cfg-merge
147     - gerrit-jenkins-cfg-merge
148     - github-jenkins-cfg-merge
149
150 :Optional parameters:
151
152     :branch: Git branch to build against. (default: master)
153     :cron: How often to run the job on a cron schedule. (default: @daily)
154     :git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
155     :jenkins-silos: Space separated list of Jenkins silos to update
156         configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini
157         (default: production sandbox)
158
159 Typically this template is automatically pulled in by the
160 "{project-name}-ci-jobs" job-group and does not need to be explicitly called if
161 the job group is being used.
162
163 Minimal Example:
164
165 .. literalinclude:: ../../.jjb-test/lf-ci-jobs/jenkins-cfg-merge-minimal.yaml
166    :language: yaml
167
168 Full Example:
169
170 .. literalinclude:: ../../.jjb-test/lf-ci-jobs/jenkins-cfg-merge-full.yaml
171    :language: yaml
172
173 .. _jenkins-cfg-envvar:
174
175 Global Environment Variables
176 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
177
178 Global Environment Variables are managed via the
179 ``jenkins-config/global-vars-SILO.sh`` file in ci-management. Replace SILO with
180 the name of the Jenkins silo the variable configuration is for.
181
182 The format for this file is ``KEY=value`` for example::
183
184     GERRIT_URL=https://git.opendaylight.org/gerrit
185     GIT_BASE=git://devvexx.opendaylight.org/mirror/$PROJECT
186     GIT_URL=git://devvexx.opendaylight.org/mirror
187     JENKINS_HOSTNAME=vex-yul-odl-jenkins-2
188     LOGS_SERVER=https://logs.opendaylight.org
189     NEXUS_URL=https://nexus.opendaylight.org
190     ODLNEXUSPROXY=https://nexus.opendaylight.org
191     SILO=sandbox
192     SONAR_URL=https://sonar.opendaylight.org
193
194 Cloud Configuration
195 ^^^^^^^^^^^^^^^^^^^
196
197 This configuration requires the OpenStack Cloud plugin in Jenkins and is
198 currently the only cloud plugin supported.
199
200 OpenStack Cloud plugin version supported:
201
202 * 2.30 - 2.34
203 * 2.35 - 2.37
204
205 Cloud configuration are managed via a directory structure in ci-management as
206 follows:
207
208 - jenkins-config/clouds/openstack/
209 - jenkins-config/clouds/openstack/cattle/cloud.cfg
210 - jenkins-config/clouds/openstack/cattle/centos7-builder-2c-2g.cfg
211 - jenkins-config/clouds/openstack/cattle/centos7-builder-4c-4g.cfg
212 - jenkins-config/clouds/openstack/cattle/centos7-docker-4c-4g.cfg
213
214 The directory name inside of the "openstack" directory is used as the name of
215 the cloud configuration. In this case "cattle" is being used as the cloud name.
216
217 The ``cloud.cfg`` file is a special file used to configure the main cloud
218 configuration in the format ``KEY=value``.
219
220 :Cloud Parameters:
221
222     :CLOUD_URL: API endpoint URL for Keystone.
223         (default: "")
224     :CLOUD_IGNORE_SSL: Ignore unverified SSL certificates. (default: false)
225     :CLOUD_ZONE: OpenStack region to use. (default: "")
226     :CLOUD_CREDENTIAL_ID: Credential to use for authentication to OpenStack.
227         (default: "os-cloud")
228     :INSTANCE_CAP: Total number of instances the cloud will allow spin up.
229         (default: null)
230     :SANDBOX_CAP: Total number of instances the cloud will allow to
231         spin up. This applies to "sandbox" systems and overrides the
232         INSTANCE_CAP setting. (default: null)
233
234 :Template Parameters:
235
236     .. note::
237
238        In the case of template definitions of a parameter below is not passed
239        the one defined in default clouds will be inherited.
240
241     :IMAGE_NAME: The image name to use for this template.
242         (required)
243     :HARDWARE_ID: OpenStack flavor to use. (required)
244
245     :LABELS: Labels to assign to the vm. (default: FILE_NAME)
246     :NETWORK_ID: OpenStack network to use. (default: "")
247     :USER_DATA_ID: User Data to pass into the instance.
248         (default: jenkins-init-script)
249     :INSTANCE_CAP: Total number of instances of this type that can be launched
250         at one time. When defined in clouds.cfg it defines the total for the
251         entire cloud. (default: null)
252     :SANDBOX_CAP: Total number of instances of this type that can be launched
253         at one time. When defined in clouds.cfg it defines the total for the
254         entire cloud. This applies to "sandbox" systems and overrides the
255         INSTANCE_CAP setting. (default: null)
256     :FLOATING_IP_POOL: Floating ip pool to use. (default: "")
257     :SECURITY_GROUPS: Security group to use. (default: "default")
258     :AVAILABILITY_ZONE: OpenStack availability zone to use. (default: "")
259     :START_TIMEOUT: Number of milliseconds to wait for the agent to be
260         provisioned and connected. (default: 600000)
261     :KEY_PAIR_NAME: SSH Public Key Pair to use for authentication.
262         (default: jenkins)
263     :NUM_EXECUTORS: Number of executors to enable for the instance.
264         (default: 1)
265     :JVM_OPTIONS: JVM Options to pass to Java. (default: "")
266     :FS_ROOT: File system root for the workspace. (default: "/w")
267     :RETENTION_TIME: Number of minutes to wait for an idle slave to be used
268         again before it's removed. If set to -1, the slave will be kept
269         forever. (default: 0)
270     :CONNECTION_TYPE: The connection type for Jenkins to connect to the build
271         minion. Valid options: JNLP, SSH. (default: "SSH")
272
273 For a live example see the OpenDaylight project jenkins-config directory.
274 https://github.com/opendaylight/releng-builder/tree/master/jenkins-config
275
276 Troubleshooting
277 ^^^^^^^^^^^^^^^
278
279 :Cloud Configuration:
280
281     The directory ``groovy-inserts`` contains the groovy script output that is
282     used to push to Jenkins. In the event of a job failure this file can be
283     inspected.
284
285  .. _lf-global-jjb-jenkins-cfg-verify:
286
287 Jenkins Configuration Verify
288 ----------------------------
289
290 Jenkins job to verify the Global Jenkins configuration.
291
292 Requires the ``clouds-yaml`` file to be setup on the Jenkins host.
293
294 :Template names:
295
296     - {project-name}-jenkins-cfg-verify
297     - gerrit-jenkins-cfg-verify
298     - github-jenkins-cfg-verify
299
300 :Optional parameters:
301
302     :branch: Git branch to build against. (default: master)
303     :git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
304
305 This job is not part of the "{project-name}-ci-jobs" group. It must be called
306 explicitly.
307
308 Example:
309
310 .. literalinclude:: ../../.jjb-test/lf-ci-jobs/jenkins-cfg-verify.yaml
311    :language: yaml
312
313 Jenkins Sandbox Cleanup
314 -----------------------
315
316 Cleanup Jenkins Sandbox of jobs and views periodically.
317
318 :Template names:
319
320     - {project-name}-jenkins-sandbox-cleanup
321     - gerrit-jenkins-sandbox-cleanup
322     - github-jenkins-sandbox-cleanup
323
324 :Comment Trigger: NONE
325
326 :Required parameters:
327
328     :build-node: The node to run build on.
329     :jenkins-ssh-credential: Credential to use for SSH. (Generally
330         should be configured in defaults.yaml)
331
332 :Optional parameters:
333
334     :cron: Schedule to run job. (default: '0 8 * * 6')
335
336
337 JJB Deploy Job
338 --------------
339
340 Deploy jobs to jenkins-sandbox system via code review comment
341
342 This job checks out the current code review patch and then runs a
343 `jenkins-jobs update` to push a patch defined by the comment.
344
345 :Template names:
346
347     - {project-name}-jjb-deploy-job
348     - gerrit-jjb-deploy-job
349     - github-jjb-deploy-job
350
351 :Comment Trigger: jjb-deploy JOB_NAME
352
353     .. note::
354
355        JOB_NAME can include the * wildcard character to push multiple jobs
356        matching the pattern. For example `jjb-deploy builder-jjb-*`` will push
357        all builder-jjb-* jobs to the sandbox system.
358
359 :Required parameters:
360
361     :build-node: The node to run build on.
362     :jenkins-ssh-credential: Credential to use for SSH. (Generally
363         should be configured in defaults.yaml)
364
365 :Optional parameters:
366
367     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
368     :gerrit_jjb_deploy_job_triggers: Override Gerrit Triggers.
369
370
371 JJB Merge
372 ---------
373
374 Runs `jenkins-jobs update` to update production job configuration
375
376 :Template Names:
377     - {project-name}-jjb-merge
378     - gerrit-jjb-merge
379     - github-jjb-merge
380
381 :Comment Trigger: remerge
382
383 :Required parameters:
384
385     :build-node: The node to run build on.
386     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
387         be configured in defaults.yaml)
388
389 :Optional parameters:
390
391     :branch: Git branch to fetch for the build. (default: master)
392     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
393     :build-timeout: Timeout in minutes before aborting build. (default: 10)
394     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
395     :jjb-version: JJB version to install. (default: see job-template)
396     :stream: Keyword that can be used to represent a release code-name.
397         Often the same as the branch. (default: master)
398     :submodule-recursive: Whether to checkout submodules recursively.
399         (default: true)
400     :submodule-timeout: Timeout (in minutes) for checkout operation.
401         (default: 10)
402
403     :gerrit_merge_triggers: Override Gerrit Triggers.
404     :gerrit_trigger_file_paths: Override file paths which can be used to
405         filter which file modifications will trigger a build.
406         (default defined by lf_jjb_common)
407
408
409 JJB Verify
410 ----------
411
412 Runs `jenkins-jobs test` to validate JJB syntax
413
414 :Template Names:
415     - {project-name}-jjb-verify
416     - gerrit-jjb-verify
417     - github-jjb-verify
418
419 :Comment Trigger: recheck|reverify
420
421 :Required parameters:
422
423     :build-node: The node to run build on.
424     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
425         be configured in defaults.yaml)
426
427 :Optional parameters:
428
429     :branch: Git branch to fetch for the build. (default: master)
430     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
431     :build-timeout: Timeout in minutes before aborting build. (default: 10)
432     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
433     :jjb-version: JJB version to install. (default: see job-template)
434     :stream: Keyword that can be used to represent a release code-name.
435         Often the same as the branch. (default: master)
436     :submodule-recursive: Whether to checkout submodules recursively.
437         (default: true)
438     :submodule-timeout: Timeout (in minutes) for checkout operation.
439         (default: 10)
440
441     :gerrit_verify_triggers: Override Gerrit Triggers.
442     :gerrit_trigger_file_paths: Override file paths which can be used to
443         filter which file modifications will trigger a build.
444         (default defined by lf_jjb_common)
445
446 .. _jjb-verify-upstream-gjjb:
447
448 JJB Verify Upstream Global JJB
449 ------------------------------
450
451 Runs ``jenkins-jobs test`` to validate JJB syntax for upstream global-jjb
452 patches. This job is useful to notify upstream that they may be breaking
453 project level jobs.
454
455 :Template Names:
456     - {project-name}-jjb-verify-upstream-gjjb
457     - gerrit-jjb-verify-upstream-gjjb
458
459 :Comment Trigger: recheck|reverify
460
461 :Required parameters:
462
463     :build-node: The node to run build on.
464     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
465         be configured in defaults.yaml)
466
467 :Optional parameters:
468
469     :branch: Git branch to fetch for the build. (default: master)
470     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
471     :build-timeout: Timeout in minutes before aborting build. (default: 10)
472     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
473     :jjb-version: JJB version to install. (default: see job-template)
474     :stream: Keyword that can be used to represent a release code-name.
475         Often the same as the branch. (default: master)
476
477 .. _info-yaml-verify:
478
479 Info YAML Verify
480 ----------------
481
482 Info YAML Verify job validates that INFO.yaml file changes are kept isolated from
483 other file changes. Verifies INFO.yaml files follow the schema defined in
484 `global-jjb/info-schema`.
485
486 :Template Names:
487     - {project-name}-info-yaml-verify
488     - gerrit-info-yaml-verify
489     - github-info-yaml-verify
490
491 :Required parameters:
492
493     :build-node: The node to run build on.
494     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
495         be configured in defaults.yaml)
496
497 :Optional parameters:
498
499     :branch: Git branch to fetch for the build. (default: master)
500     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
501     :build-timeout: Timeout in minutes before aborting build. (default: 10)
502     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
503     :stream: Keyword that can be used to represent a release code-name.
504         Often the same as the branch. (default: master)
505     :submodule-recursive: Whether to checkout submodules recursively.
506         (default: true)
507     :submodule-timeout: Timeout (in minutes) for checkout operation.
508         (default: 10)
509
510     :gerrit_verify_triggers: Override Gerrit Triggers.
511
512 .. _license-checker:
513
514 License Checker
515 ---------------
516
517 Job to scan projects for files missing license headers.
518
519 :Template Names:
520     - {project-name}-license-check
521     - gerrit-license-check
522     - github-license-check
523
524 :Optional parameters:
525
526     :build-timeout: Timeout in minutes before aborting build. (default: 15)
527     :file-patterns: Space-separated list of file patterns to scan.
528         (default: \*.go \*.groovy \*.java \*.py \*.sh)
529     :spdx-disable: Disable the SPDX-Identifier checker. (default: false)
530     :lhc-version: Version of LHC to use. (default: 0.2.0)
531     :license-exclude-paths: Comma-separated list of paths to exclude from the
532         license checker. The paths used here will be matched using a contains
533         rule so it is best to be as precise with the path as possible.
534         For example a path of '/src/generated/' will be searched as
535         '**/src/generated/**'.
536         Example: org/opendaylight/yang/gen,protobuff/messages
537         (default: '')
538     :licenses-allowed: Comma-separated list of allowed licenses.
539         (default: Apache-2.0,EPL-1.0,MIT)
540     :project-pattern: The ANT based pattern for Gerrit Trigger to choose which
541         projects to trigger job against. (default: '**')
542
543 .. _gjjb-openstack-cron:
544
545 OpenStack Cron
546 --------------
547
548 Cron job that runs regularly to perform periodic tasks against OpenStack.
549
550 This job requires a Config File Provider file named ``clouds-yaml`` available
551 containing the credentials for the cloud.
552
553 :Template Names:
554     - {project-name}-openstack-cron
555     - gerrit-openstack-cron
556     - github-openstack-cron
557
558 :Required parameters:
559
560     :build-node: The node to run build on.
561     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
562         be configured in defaults.yaml)
563
564 :Optional parameters:
565
566     :branch: Git branch to fetch for the build. (default: master)
567     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
568     :build-timeout: Timeout in minutes before aborting build. (default: 90)
569     :cron: Time when the packer image should be rebuilt (default: @daily)
570     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
571     :openstack-cloud: OS_CLOUD setting to pass to openstack client.
572         (default: vex)
573     :openstack-image-cleanup: Whether or not to run the image cleanup script.
574         (default: true)
575     :openstack-image-cleanup-age: Age in days of image before marking it for
576         removal. (default: 30)
577     :openstack-image-protect: Whether or not to run the image protect script.
578         (default: true)
579     :stream: Keyword that can be used to represent a release code-name.
580         Often the same as the branch. (default: master)
581     :submodule-recursive: Whether to checkout submodules recursively.
582         (default: true)
583     :submodule-timeout: Timeout (in minutes) for checkout operation.
584         (default: 10)
585
586 Minimal Example:
587
588 .. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-cron-minimal.yaml
589
590 Full Example:
591
592 .. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-cron-full.yaml
593
594
595 .. _gjjb-packer-merge:
596
597 Packer Merge
598 ------------
599
600 Packer Merge job runs `packer build` to build system images in the cloud.
601
602 :Template Names:
603     - {project-name}-packer-merge-{platforms}-{templates}
604     - gerrit-packer-merge
605     - github-packer-merge
606
607 :Comment Trigger: remerge
608
609 :Required parameters:
610
611     :build-node: The node to run build on.
612     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
613         be configured in defaults.yaml)
614     :mvn-settings: The name of settings file containing credentials for
615         the project.
616     :platforms: Platform or distribution to build. Typically json file
617         found in the packer/vars directory. (Example: centos)
618     :template: System template to build. Typically shell script found in
619         the packer/provision directory. (Example: java-builder)
620
621 :Optional parameters:
622
623     :cron: Time when the packer image should be rebuilt (default: @monthly)
624     :branch: Git branch to fetch for the build. (default: master)
625     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
626     :build-timeout: Timeout in minutes before aborting build. (default: 90)
627     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
628     :openstack: Packer template uses an OpenStack builder (default: true).
629     :openstack-cloud: Sets OS_CLOUD variable to the value of this parameter.
630         (default: vex).
631     :packer-cloud-settings: Name of settings file containing credentials
632         for the cloud that packer will build on. (default: packer-cloud-env)
633     :packer-version: Version of packer to install / use in build. (default: 1.0.2)
634     :stream: Keyword that can be used to represent a release code-name.
635         Often the same as the branch. (default: master)
636     :submodule-recursive: Whether to checkout submodules recursively.
637         (default: true)
638     :submodule-timeout: Timeout (in minutes) for checkout operation.
639         (default: 10)
640
641     :gerrit_verify_triggers: Override Gerrit Triggers.
642
643
644 .. _gjjb-packer-verify:
645
646 Packer Verify
647 -------------
648
649 Packer Verify job runs `packer validate` to verify packer configuration.
650
651 :Template Names:
652     - {project-name}-packer-verify
653     - gerrit-packer-verify
654     - github-packer-verify
655
656 :Comment Trigger: recheck|reverify
657
658 :Required parameters:
659
660     :build-node: The node to run build on.
661     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
662         be configured in defaults.yaml)
663     :mvn-settings: The name of settings file containing credentials for
664         the project.
665
666 :Optional parameters:
667
668     :branch: Git branch to fetch for the build. (default: master)
669     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
670     :build-timeout: Timeout in minutes before aborting build. (default: 10)
671     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
672     :openstack: Packer template uses an OpenStack builder (default: true).
673     :openstack-cloud: Sets OS_CLOUD variable to the value of this parameter.
674         (default: vex).
675     :packer-cloud-settings: Name of settings file containing credentials
676         for the cloud that packer will build on. (default: packer-cloud-env)
677     :packer-version: Version of packer to install / use in build. (default: 1.0.2)
678     :stream: Keyword that can be used to represent a release code-name.
679         Often the same as the branch. (default: master)
680     :submodule-recursive: Whether to checkout submodules recursively.
681         (default: true)
682     :submodule-timeout: Timeout (in minutes) for checkout operation.
683         (default: 10)
684
685     :gerrit_verify_triggers: Override Gerrit Triggers.
686     :gerrit_trigger_file_paths: Override file paths which can be used to
687         filter which file modifications will trigger a build.