Merge "Revert "Change build node to centos7-docker-8c-8g""
[ci-management.git] / jjb / global-templates-java.yaml
1 ---
2 - job-template: &verify_java_defaults
3     # Job template for Java verify jobs
4     #
5     # The purpose of this job template is to run:
6     # 1. maven clean install
7     #
8     # Required Variables:
9     #     branch:    git branch (eg. stable/lithium or master)
10
11     name: '{project-name}-{stream}-verify-java'
12
13     project-type: freestyle
14     concurrent: true
15     node: '{build-node}'
16     build-env-variables: ''
17     pattern: '**'
18     pom:
19     mvn-opts: ''
20     java-opts: ''
21     java-version: openjdk8
22     properties:
23       - infra-properties:
24           build-days-to-keep: '{build-days-to-keep}'
25
26     parameters:
27       - infra-parameters:
28           project: '{project}'
29           branch: '{branch}'
30           refspec: 'refs/heads/{branch}'
31           artifacts: '{archive-artifacts}'
32       - maven-exec:
33           maven-version: '{maven-version}'
34       - maven-params:
35           mvn-params: '{mvn-params}'
36
37     scm:
38       - gerrit-trigger-scm:
39           refspec: '$GERRIT_REFSPEC'
40           choosing-strategy: 'gerrit'
41           submodule-recursive: '{submodule-recursive}'
42
43     wrappers:
44       - infra-wrappers:
45           build-timeout: '{build-timeout}'
46
47     triggers:
48       - gerrit-trigger-patch-submitted:
49           server: '{server-name}'
50           project: '{project}'
51           branch: '{branch}'
52           files: '{obj:pattern}'
53
54     builders:
55       - lf-infra-pre-build
56       - lf-update-java-alternatives:
57           java-version: "{java-version}"
58       - provide-maven-settings:
59           global-settings-file: 'global-settings'
60           settings-file: '{mvn-settings}'
61       - inject:
62           properties-content: "{build-env-variables}"
63       - maven-target:
64           maven-version: '{maven-version}'
65           pom: '{obj:pom}'
66           goals: 'clean install -B
67             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn {mvn-params}'
68           properties:
69             - MAVEN_OPTS='{mvn-opts}'
70           java-opts:
71             - "{java-opts}"
72           settings: '{mvn-settings}'
73           settings-type: cfp
74           global-settings: 'global-settings'
75           global-settings-type: cfp
76
77     publishers:
78       - infra-shiplogs:
79           maven-version: '{maven-version}'
80
81 - job-template:
82     # Job template for Java verify jobs running checkstyle at the end
83     # When checkstyle will be fully incorporated, it is meant to replace
84     #  '{project-name}-{stream}-verify-java-checkstyle'
85     #
86     # The purpose of this job template is to run:
87     # 1. maven clean install
88     #
89     # This job publishes checkstyle results.
90     #
91     # Required Variables:
92     #     branch:    git branch (eg. stable/lithium or master)
93
94     <<: *verify_java_defaults
95     name: '{project-name}-{stream}-verify-java-checkstyle'
96     publishers:
97       - infra-shiplogs:
98           maven-version: '{maven-version}'
99       - checkstyle-result
100
101 - job-template:
102     # Job template for Java verify jobs with POM not at the root
103     #
104     # The purpose of this job template is to run:
105     # 1. maven clean install
106     #
107     # This job supports subprojects.
108     #
109     # Required Variables:
110     #     branch:    git branch (eg. stable/lithium or master)
111     #     pom:       name/location of the pom.xml file relative to the workspace
112     #     pattern:   ant file-path pattern relative to the workspace used to
113     #                trigger the job
114
115     <<: *verify_java_defaults
116     name: '{project-name}-{stream}-{subproject}-verify-java'
117
118 - job-template:
119     # Job template for Java daily release jobs
120     #
121     # The purpose of this job template is to run:
122     # 1. maven clean deploy with Sonar scans
123     #
124     # Required Variables:
125     #     branch:    git branch (eg. stable/lithium or master)
126
127     name: '{project-name}-{stream}-release-java-daily'
128
129     project-type: freestyle
130     node: '{build-node}'
131     disabled: '{disabled}'
132     maven-deploy-properties:
133     properties:
134       - infra-properties:
135           build-days-to-keep: '{build-days-to-keep}'
136
137     parameters:
138       - infra-parameters:
139           project: '{project}'
140           branch: '{branch}'
141           refspec: 'refs/heads/{branch}'
142           artifacts: '{archive-artifacts}'
143       - maven-exec:
144           maven-version: '{maven-version}'
145
146     scm:
147       - gerrit-trigger-scm:
148           refspec: ''
149           choosing-strategy: 'default'
150           submodule-recursive: '{submodule-recursive}'
151
152     wrappers:
153       - infra-wrappers:
154           build-timeout: '{build-timeout}'
155
156     triggers:
157       # 11 AM UTC
158       - timed: '@daily'
159       - gerrit-trigger-release-manually:
160           server: '{server-name}'
161           project: '{project}'
162           branch: '{branch}'
163
164     builders:
165       - lf-infra-pre-build
166       - provide-maven-settings:
167           global-settings-file: 'global-settings'
168           settings-file: '{mvn-settings}'
169
170       - maven-target:
171           maven-version: '{maven-version}'
172           goals: 'clean deploy -B
173             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
174           properties:
175             - '{maven-deploy-properties}'
176           java-opts:
177             - '-Xmx4096m -XX:MaxPermSize=512m'
178           settings: '{mvn-settings}'
179           settings-type: cfp
180           global-settings: 'global-settings'
181           global-settings-type: cfp
182
183     publishers:
184       - infra-shiplogs:
185           maven-version: '{maven-version}'
186
187 - job-template:
188     # Job template for Java daily release jobs running checkstyle at the end
189     # When checkstyle will be fully incorporated, it is meant to replace
190     #  '{project-name}-{stream}-release-java-daily'
191     #
192     # The purpose of this job template is to run:
193     # 1. maven clean deploy with Sonar scans
194     #
195     # This job publishes checkstyle results.
196     # This job uses a conditional regex match step to set versions.
197     #
198     # Required Variables:
199     #     branch:    git branch (eg. stable/lithium or master)
200
201     name: '{project-name}-{stream}-release-java-daily-checkstyle'
202     project-type: freestyle
203     node: '{build-node}'
204     disabled: '{disabled}'
205     maven-deploy-properties:
206     properties:
207       - infra-properties:
208           build-days-to-keep: '{build-days-to-keep}'
209     parameters:
210       - infra-parameters:
211           project: '{project}'
212           branch: '{branch}'
213           refspec: 'refs/heads/{branch}'
214           artifacts: '{archive-artifacts}'
215       - maven-exec:
216           maven-version: '{maven-version}'
217     scm:
218       - gerrit-trigger-scm:
219           refspec: ''
220           choosing-strategy: 'default'
221           submodule-recursive: '{submodule-recursive}'
222     wrappers:
223       - infra-wrappers:
224           build-timeout: '{build-timeout}'
225     triggers:
226       # 11 AM UTC
227       - timed: '@daily'
228       - gerrit-trigger-release-manually:
229           server: '{server-name}'
230           project: '{project}'
231           branch: '{branch}'
232     builders:
233       - lf-infra-pre-build
234       - provide-maven-settings:
235           global-settings-file: 'global-settings'
236           settings-file: '{mvn-settings}'
237       - conditional-step:
238           condition-kind: regex-match
239           regex: DoSetVersion
240           label: '{setVersion}'
241           steps:
242             - inject:
243                 properties-file: version.properties
244             - maven-set-release-version:
245                 maven-version: '{maven-version}'
246                 mvn-settings: '{mvn-settings}'
247                 pom:
248       - maven-target:
249           maven-version: '{maven-version}'
250           goals: 'clean deploy -B
251             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
252           properties: '{obj:mvn_properties}'
253           settings: '{mvn-settings}'
254           settings-type: cfp
255           global-settings: 'global-settings'
256           global-settings-type: cfp
257     publishers:
258       - infra-shiplogs:
259           maven-version: '{maven-version}'
260       - checkstyle-result-daily
261
262 - job-template:
263     # Job template for Java daily release jobs
264     #
265     # The purpose of this job template is to run:
266     # 1. maven set versions
267     # 2. maven clean deploy with Sonar scans
268     #
269     # Required Variables:
270     #     branch:    git branch (eg. stable/lithium or master)
271
272     name: '{project-name}-{stream}-release-version-java-daily'
273
274     project-type: freestyle
275     disabled: '{disabled}'
276     node: '{build-node}'
277     maven-deploy-properties:
278     properties:
279       - infra-properties:
280           build-days-to-keep: '{build-days-to-keep}'
281
282     parameters:
283       - infra-parameters:
284           project: '{project}'
285           branch: '{branch}'
286           refspec: 'refs/heads/{branch}'
287           artifacts: '{archive-artifacts}'
288       - maven-exec:
289           maven-version: '{maven-version}'
290
291     scm:
292       - gerrit-trigger-scm:
293           refspec: ''
294           choosing-strategy: 'default'
295           submodule-recursive: '{submodule-recursive}'
296
297     wrappers:
298       - infra-wrappers:
299           build-timeout: '{build-timeout}'
300
301     triggers:
302       # 11 AM UTC
303       - timed: '@daily'
304       - gerrit-trigger-release-manually:
305           server: '{server-name}'
306           project: '{project}'
307           branch: '{branch}'
308
309     builders:
310       - lf-infra-pre-build
311       - provide-maven-settings:
312           global-settings-file: 'global-settings'
313           settings-file: '{mvn-settings}'
314
315       - inject:
316           properties-file: version.properties
317       - maven-set-release-version:
318           maven-version: '{maven-version}'
319           mvn-settings: '{mvn-settings}'
320           pom:
321
322       - maven-target:
323           maven-version: '{maven-version}'
324           goals: 'clean deploy -B
325             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
326           properties:
327             - '{maven-deploy-properties}'
328           settings: '{mvn-settings}'
329           settings-type: cfp
330           global-settings: 'global-settings'
331           global-settings-type: cfp
332
333     publishers:
334       - infra-shiplogs:
335           maven-version: '{maven-version}'
336
337 - job-template: &merge_java_defaults
338     # Job template for Java merge jobs
339     #
340     # The purpose of this job template is to run:
341     # 1. maven clean deploy
342     #
343     # Required Variables:
344     #     branch:    git branch (eg. stable/lithium or master)
345
346     name: '{project-name}-{stream}-merge-java'
347
348     project-type: freestyle
349     node: '{build-node}'
350     pattern: '**'
351     pom:
352     mvn_properties: []
353     mvn-params: ''
354     mvn-opts: ''
355     java-opts: ''
356     java-version: openjdk8
357
358     properties:
359       - infra-properties:
360           build-days-to-keep: '{build-days-to-keep}'
361
362     parameters:
363       - infra-parameters:
364           project: '{project}'
365           branch: '{branch}'
366           refspec: 'refs/heads/{branch}'
367           artifacts: '{archive-artifacts}'
368       - maven-exec:
369           maven-version: '{maven-version}'
370
371     scm:
372       - gerrit-trigger-scm:
373           refspec: ''
374           choosing-strategy: 'default'
375           submodule-recursive: '{submodule-recursive}'
376
377     wrappers:
378       - infra-wrappers:
379           build-timeout: '{build-timeout}'
380
381     triggers:
382       - gerrit-trigger-patch-merged:
383           server: '{server-name}'
384           project: '{project}'
385           branch: '{branch}'
386           files: '{pattern}'
387
388     builders:
389       - lf-infra-pre-build
390       - lf-update-java-alternatives:
391           java-version: "{java-version}"
392       - provide-maven-settings:
393           global-settings-file: 'global-settings'
394           settings-file: '{mvn-settings}'
395       - conditional-step:
396           condition-kind: regex-match
397           regex: .*(amd64|arm64).*
398           label: '{project-name}'
399           steps:
400             - shell: !include-raw-escape: global-jjb/shell/docker-login.sh
401       - maven-target:
402           maven-version: '{maven-version}'
403           pom: '{obj:pom}'
404           goals: 'clean deploy -B {mvn-params}
405             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
406           properties:
407             - MAVEN_OPTS='{mvn-opts}'
408           java-opts:
409             - "{java-opts}"
410           settings: '{mvn-settings}'
411           settings-type: cfp
412           global-settings: 'global-settings'
413           global-settings-type: cfp
414           properties: '{obj:mvn_properties}'
415
416     publishers:
417       - infra-shiplogs:
418           maven-version: '{maven-version}'
419
420 - job-template:
421     # Job template for Java merge jobs based on
422     #   '{project-name}-{stream}-merge-java'
423     # The purpose of this job template is to run:
424     # 1. maven clean deploy
425     #
426     # This project supports maven properties.
427     #
428     # Required Variables:
429     #     branch:    git branch (eg. stable/lithium or master)
430     #     maven-properties: properties passed to maven
431
432     <<: *merge_java_defaults
433     name: '{project-name}-{stream}-merge-properties-java'
434
435 - job-template:
436     # Job template for Java merge jobs that takes a maven template
437     #
438     # The purpose of this job template is to run:
439     # 1. maven clean deploy -P {mvn-profile}
440     #
441     # Required Variables:
442     #     branch:    git branch (eg. stable/lithium or master)
443
444     <<: *merge_java_defaults
445     name: '{project-name}-{stream}-merge-profile-java'
446
447     builders:
448       - lf-infra-pre-build
449       - provide-maven-settings:
450           global-settings-file: 'global-settings'
451           settings-file: '{mvn-settings}'
452
453       - docker-login
454
455       - maven-target:
456           maven-version: '{maven-version}'
457           goals: 'clean deploy -P {mvn-profile} -B
458             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
459           settings: '{mvn-settings}'
460           settings-type: cfp
461           global-settings: 'global-settings'
462           global-settings-type: cfp
463           properties:
464             - docker.pull.registry=nexus3.onap.org:10001
465             - docker.push.registry=nexus3.onap.org:10003
466
467 - job-template:
468     # Job template for Java merge jobs with POM not at the root
469     #
470     # The purpose of this job template is to run:
471     # 1. maven clean deploy
472     #
473     # This job supports subprojects.
474     #
475     # Required Variables:
476     #     branch:    git branch (eg. stable/lithium or master)
477     #     pom:       name/location of the pom.xml file relative to the workspace
478     #     pattern:   ant file-path pattern relative to the workspace used to
479     #                trigger the job
480
481     <<: *merge_java_defaults
482     name: '{project-name}-{stream}-{subproject}-merge-java'
483
484 - job-template: &docker_java_defaults
485     # Job template for Docker daily jobs
486     #
487     # The purpose of this job template is to run:
488     # 1. login to the docker registry
489     # 2. docker push
490     #
491     # Required Variables:
492     #     branch:    git branch (eg. stable/lithium or master)
493
494     name: '{project-name}-{stream}-docker-java-daily'
495     id: '{project-name}-{stream}-docker-java-daily'
496     project-type: freestyle
497     node: '{build-node}'
498     disabled: '{disabled}'
499     properties:
500       - infra-properties:
501           build-days-to-keep: '{build-days-to-keep}'
502
503     parameters:
504       - infra-parameters:
505           project: '{project}'
506           branch: '{branch}'
507           refspec: 'refs/heads/{branch}'
508           artifacts: '{archive-artifacts}'
509       - maven-exec:
510           maven-version: '{maven-version}'
511       - maven-params:
512           mvn-params: '{mvn-params}'
513
514     scm:
515       - gerrit-trigger-scm:
516           refspec: ''
517           choosing-strategy: 'default'
518           submodule-recursive: '{submodule-recursive}'
519
520     wrappers:
521       - infra-wrappers:
522           build-timeout: '{build-timeout}'
523
524     triggers:
525       # 12 AM UTC
526       - timed: '@daily'
527       - gerrit-trigger-release-manually:
528           server: '{server-name}'
529           project: '{project}'
530           branch: '{branch}'
531
532     builders:
533       - lf-infra-pre-build
534       - provide-maven-settings:
535           global-settings-file: 'global-settings'
536           settings-file: '{mvn-settings}'
537
538       - docker-login
539
540       - maven-docker-push-daily:
541           maven-version: '{maven-version}'
542           mvn-settings: '{mvn-settings}'
543           pom: '{docker-pom}'
544           # use default as mvn-profile if profile is not needed
545           mvn-profile: '{mvn-profile}'
546           mvn-params: '{mvn-params}'
547
548     publishers:
549       - infra-shiplogs:
550           maven-version: '{maven-version}'
551
552 - job-template:
553     # Job template for Docker daily jobs
554     #
555     # The purpose of this job template is to run:
556     # 1. login to the docker registry
557     # 2. docker push
558     #
559     # Required Variables:
560     #     branch:    git branch (eg. stable/lithium or master)
561
562     <<: *docker_java_defaults
563     name: '{project-name}-{stream}-docker-java-daily'
564     id: docker-java-daily
565     node: '{build-node}'
566     wrappers:
567       - infra-wrappers-docker-build:
568           build-timeout: '{build-timeout}'
569
570 - job-template:
571     # Job template for building & pushing docker images
572     #
573     # The purpose of this job template is to run:
574     #  1. login to the docker registry
575     #  2. run a specified shell builder
576     #
577     # Required Variables:
578     #     pom:       name/location of the pom.xml file relative to the workspace
579     #     maven-properties: properties passed to maven
580
581     name: '{project-name}-{stream}-docker-java-shell-daily'
582     project-type: freestyle
583     node: '{build-node}'
584     disabled: '{disabled}'
585     properties:
586       - infra-properties:
587           build-days-to-keep: '{build-days-to-keep}'
588
589     parameters:
590       - infra-parameters:
591           project: '{project}'
592           branch: '{branch}'
593           refspec: 'refs/heads/{branch}'
594           artifacts: '{archive-artifacts}'
595       - maven-exec:
596           maven-version: '{maven-version}'
597
598     scm:
599       - gerrit-trigger-scm:
600           refspec: ''
601           choosing-strategy: 'default'
602           submodule-recursive: '{submodule-recursive}'
603
604     wrappers:
605       - infra-wrappers:
606           build-timeout: '{build-timeout}'
607
608     triggers:
609       # 12 AM UTC
610       - timed: '@daily'
611       - gerrit-trigger-release-manually:
612           server: '{server-name}'
613           project: '{project}'
614           branch: '{branch}'
615
616     builders:
617       - lf-infra-pre-build
618       - provide-maven-settings:
619           global-settings-file: 'global-settings'
620           settings-file: '{mvn-settings}'
621
622       - docker-login
623
624       - maven-target:
625           maven-version: '{maven-version}'
626           goals: '{mvn-goals}'
627           settings: '{mvn-settings}'
628           settings-type: cfp
629           global-settings: 'global-settings'
630           global-settings-type: cfp
631
632       - shell: '{script}'
633
634     publishers:
635       - infra-shiplogs:
636           maven-version: '{maven-version}'
637
638 - job-template:
639     # Job template for building & pushing docker images
640     #
641     # The purpose of this job template is to run:
642     #  1. login to the docker registry
643     #  2. run a specified shell builder
644     #
645     # Required Variables:
646     #     pom:       name/location of the pom.xml file relative to the workspace
647     #     maven-properties: properties passed to maven
648
649     name: '{project-name}-{stream}-{subproject}-docker-java-shell-daily'
650     project-type: freestyle
651     node: '{build-node}'
652     disabled: '{disabled}'
653     properties:
654       - infra-properties:
655           build-days-to-keep: '{build-days-to-keep}'
656
657     parameters:
658       - infra-parameters:
659           project: '{project}'
660           branch: '{branch}'
661           refspec: 'refs/heads/{branch}'
662           artifacts: '{archive-artifacts}'
663       - maven-exec:
664           maven-version: '{maven-version}'
665
666     scm:
667       - gerrit-trigger-scm:
668           refspec: ''
669           choosing-strategy: 'default'
670           submodule-recursive: '{submodule-recursive}'
671
672     wrappers:
673       - infra-wrappers:
674           build-timeout: '{build-timeout}'
675
676     triggers:
677       # 12 AM UTC
678       - timed: '@daily'
679       - gerrit-trigger-release-manually:
680           server: '{server-name}'
681           project: '{project}'
682           branch: '{branch}'
683
684     builders:
685       - lf-infra-pre-build
686       - provide-maven-settings:
687           global-settings-file: 'global-settings'
688           settings-file: '{mvn-settings}'
689
690       - docker-login
691
692       - maven-target:
693           maven-version: '{maven-version}'
694           pom: '{pom}'
695           goals: '{mvn-goals}'
696           settings: '{mvn-settings}'
697           settings-type: cfp
698           global-settings: 'global-settings'
699           global-settings-type: cfp
700
701       - shell: '{script}'
702
703     publishers:
704       - infra-shiplogs:
705           maven-version: '{maven-version}'
706
707 - job-template:
708     # Job template for building & pushing docker images
709     #
710     # The purpose of this job template is to run:
711     #  1. login to the docker registry
712     #  2. inject a version.properties file and set versions
713     #  3. run a specified shell builder
714     #
715     # Required Variables:
716     #     pom:       name/location of the pom.xml file relative to the workspace
717     #     maven-properties: properties passed to maven
718
719     name: '{project-name}-{stream}-docker-java-version-shell-daily'
720     project-type: freestyle
721     node: '{build-node}'
722     disabled: '{disabled}'
723     properties:
724       - infra-properties:
725           build-days-to-keep: '{build-days-to-keep}'
726
727     parameters:
728       - infra-parameters:
729           project: '{project}'
730           branch: '{branch}'
731           refspec: 'refs/heads/{branch}'
732           artifacts: '{archive-artifacts}'
733       - maven-exec:
734           maven-version: '{maven-version}'
735
736     scm:
737       - gerrit-trigger-scm:
738           refspec: ''
739           choosing-strategy: 'default'
740           submodule-recursive: '{submodule-recursive}'
741
742     wrappers:
743       - infra-wrappers:
744           build-timeout: '{build-timeout}'
745
746     triggers:
747       # 12 AM UTC
748       - timed: '@daily'
749       - gerrit-trigger-release-manually:
750           server: '{server-name}'
751           project: '{project}'
752           branch: '{branch}'
753
754     builders:
755       - lf-infra-pre-build
756       - provide-maven-settings:
757           global-settings-file: 'global-settings'
758           settings-file: '{mvn-settings}'
759
760       - inject:
761           properties-file: version.properties
762       - maven-set-release-version:
763           maven-version: '{maven-version}'
764           mvn-settings: '{mvn-settings}'
765           pom:
766
767       - docker-login
768
769       - maven-target:
770           maven-version: '{maven-version}'
771           goals: '{mvn-goals}'
772           settings: '{mvn-settings}'
773           settings-type: cfp
774           global-settings: 'global-settings'
775           global-settings-type: cfp
776
777       - shell: '{script}'
778
779     publishers:
780       - infra-shiplogs:
781           maven-version: '{maven-version}'
782
783 - job-template:
784     # Job template for building & pushing docker images
785     #
786     # The purpose of this job template is to run:
787     #  1. login to the docker registry
788     #  2. inject a version.properties file and set versions
789     #  3. run a specified shell builder
790     #
791     # This template supports subprojects.
792     #
793     # Required Variables:
794     #     pom:       name/location of the pom.xml file relative to the workspace
795     #     maven-properties: properties passed to maven
796
797     name: '{project-name}-{stream}-{subproject}-docker-java-version-shell-daily'
798     project-type: freestyle
799     node: 'ubuntu1604-docker-8c-8g'
800     disabled: '{disabled}'
801     properties:
802       - infra-properties:
803           build-days-to-keep: '{build-days-to-keep}'
804
805     parameters:
806       - infra-parameters:
807           project: '{project}'
808           branch: '{branch}'
809           refspec: 'refs/heads/{branch}'
810           artifacts: '{archive-artifacts}'
811       - maven-exec:
812           maven-version: '{maven-version}'
813
814     scm:
815       - gerrit-trigger-scm:
816           refspec: ''
817           choosing-strategy: 'default'
818           submodule-recursive: '{submodule-recursive}'
819
820     wrappers:
821       - infra-wrappers:
822           build-timeout: '{build-timeout}'
823
824     triggers:
825       # 12 AM UTC
826       - timed: '@daily'
827       - gerrit-trigger-release-manually:
828           server: '{server-name}'
829           project: '{project}'
830           branch: '{branch}'
831
832     builders:
833       - lf-infra-pre-build
834       - provide-maven-settings:
835           global-settings-file: 'global-settings'
836           settings-file: '{mvn-settings}'
837
838       - inject:
839           properties-file: version.properties
840       - maven-set-release-version:
841           maven-version: '{maven-version}'
842           mvn-settings: '{mvn-settings}'
843           pom: '{pom}'
844
845       - docker-login
846
847       - maven-target:
848           maven-version: '{maven-version}'
849           pom: '{pom}'
850           goals: '{mvn-goals}'
851           settings: '{mvn-settings}'
852           settings-type: cfp
853           global-settings: 'global-settings'
854           global-settings-type: cfp
855
856       - shell: '{script}'
857
858     publishers:
859       - infra-shiplogs:
860           maven-version: '{maven-version}'
861
862 - job-template: &docker_version_java_defaults
863     # Job template for building & pushing docker images
864     #
865     # The purpose of this job template is to run:
866     #  1. login to the docker registry
867     #  2. inject a version.properties file and set versions
868     #  3. run a docker push
869     #
870     # Required Variables:
871     #     pom:       name/location of the pom.xml file relative to the workspace
872     #     profile:   the docker profile defined in the pom
873     #     maven-properties: properties passed to maven
874
875     name: '{project-name}-{stream}-docker-version-java-daily'
876     id: '{project-name}-{stream}-docker-version-java-daily'
877     project-type: freestyle
878     node: '{build-node}'
879     disabled: '{disabled}'
880     properties:
881       - infra-properties:
882           build-days-to-keep: '{build-days-to-keep}'
883
884     parameters:
885       - infra-parameters:
886           project: '{project}'
887           branch: '{branch}'
888           refspec: 'refs/heads/{branch}'
889           artifacts: '{archive-artifacts}'
890       - maven-exec:
891           maven-version: '{maven-version}'
892       - maven-params:
893           mvn-params: '{mvn-params}'
894
895     scm:
896       - gerrit-trigger-scm:
897           refspec: ''
898           choosing-strategy: 'default'
899           submodule-recursive: '{submodule-recursive}'
900
901     wrappers:
902       - infra-wrappers:
903           build-timeout: '{build-timeout}'
904
905     triggers:
906       # 12 AM UTC
907       - timed: '@daily'
908       - gerrit-trigger-release-manually:
909           server: '{server-name}'
910           project: '{project}'
911           branch: '{branch}'
912
913     builders:
914       - lf-infra-pre-build
915       - provide-maven-settings:
916           global-settings-file: 'global-settings'
917           settings-file: '{mvn-settings}'
918
919       - inject:
920           properties-file: version.properties
921       - maven-set-release-version:
922           maven-version: '{maven-version}'
923           mvn-settings: '{mvn-settings}'
924           pom:
925
926       - docker-login
927
928       - maven-docker-push-daily:
929           maven-version: '{maven-version}'
930           mvn-settings: '{mvn-settings}'
931           pom: '{docker-pom}'
932           # use default as mvn-profile if profile is not needed
933           mvn-profile: '{mvn-profile}'
934           mvn-params: '{mvn-params}'
935
936     publishers:
937       - infra-shiplogs:
938           maven-version: '{maven-version}'
939
940 - job-template:
941     # Job template for building & pushing docker images
942     #
943     # The purpose of this job template is to run:
944     #  1. login to the docker registry
945     #  2. inject a version.properties file and set versions
946     #  3. run a docker push
947     #
948     # Required Variables:
949     #     pom:       name/location of the pom.xml file relative to the workspace
950     #     profile:   the docker profile defined in the pom
951     #     maven-properties: properties passed to maven
952
953     <<: *docker_version_java_defaults
954     name: '{project-name}-{stream}-docker-version-java-daily'
955     id: 'docker-version-java-daily'
956     node: '{build-node}'
957     wrappers:
958       - infra-wrappers-docker-build:
959           build-timeout: '{build-timeout}'
960
961 - job-template:
962     # Job template for building & pushing docker images for AAI specific repos
963     #
964     # The purpose of this job template is to run:
965     #  1. login to the docker registry
966     #  2. run maven goals
967     #  3. run include-docker-push.sh
968     #
969     # Required Variables:
970     #     pom:       name/location of the pom.xml file relative to the workspace
971     #     maven-properties: properties passed to maven
972
973     name: '{project-name}-{stream}-aai-docker-java-daily'
974     project-type: freestyle
975     node: '{build-node}'
976     docker-image-name: ''
977     disabled: '{disabled}'
978     properties:
979       - infra-properties:
980           build-days-to-keep: '{build-days-to-keep}'
981
982     parameters:
983       - infra-parameters:
984           project: '{project}'
985           branch: '{branch}'
986           refspec: 'refs/heads/{branch}'
987           artifacts: '{archive-artifacts}'
988       - maven-exec:
989           maven-version: '{maven-version}'
990       - docker-image-name:
991           docker-image-name: '{docker-image-name}'
992
993     scm:
994       - gerrit-trigger-scm:
995           refspec: ''
996           choosing-strategy: 'default'
997           submodule-recursive: '{submodule-recursive}'
998
999     wrappers:
1000       - infra-wrappers:
1001           build-timeout: '{build-timeout}'
1002
1003     triggers:
1004       # 12 AM UTC
1005       - timed: '@daily'
1006       - gerrit-trigger-release-manually:
1007           server: '{server-name}'
1008           project: '{project}'
1009           branch: '{branch}'
1010
1011     builders:
1012       - lf-infra-pre-build
1013       - provide-maven-settings:
1014           global-settings-file: 'global-settings'
1015           settings-file: '{mvn-settings}'
1016
1017       - docker-login
1018
1019       - maven-target:
1020           maven-version: '{maven-version}'
1021           pom: 'pom.xml'
1022           goals: 'clean install -DskipTests -B
1023             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
1024           settings: '{mvn-settings}'
1025           settings-type: cfp
1026           global-settings: 'global-settings'
1027           global-settings-type: cfp
1028
1029       - maven-target:
1030           maven-version: '{maven-version}'
1031           pom: '{pom}'
1032           goals: '{mvn-goals}'
1033           settings: '{mvn-settings}'
1034           settings-type: cfp
1035           global-settings: 'global-settings'
1036           global-settings-type: cfp
1037           properties:
1038             - maven.test.skip=true
1039             - docker.pull.registry=nexus3.onap.org:10001
1040             - docker.push.registry=nexus3.onap.org:10003
1041
1042       - shell: !include-raw-escape: include-docker-push.sh
1043
1044     publishers:
1045       - infra-shiplogs:
1046           maven-version: '{maven-version}'
1047
1048 - job-template:
1049     # Job template for Java merge jobs for SDC specific repos
1050     #
1051     # The purpose of this job template is to run:
1052     # 1. maven clean deploy
1053     #
1054     # Required Variables:
1055     #     branch:    git branch (eg. stable/lithium or master)
1056
1057     <<: *merge_java_defaults
1058     name: '{project-name}-{stream}-sdc-merge-java'
1059
1060     node: '{build-node}'
1061     build-timeout: 120
1062
1063     builders:
1064       - lf-infra-pre-build
1065       - provide-maven-settings:
1066           global-settings-file: 'global-settings'
1067           settings-file: '{mvn-settings}'
1068
1069       - docker-login
1070
1071       - maven-docker-push-daily:
1072           maven-version: '{maven-version}'
1073           mvn-settings: '{mvn-settings}'
1074           pom: '{docker-pom}'
1075           # use default as mvn-profile if profile is not needed
1076           mvn-profile: '{mvn-profile}'
1077           mvn-params: ''
1078
1079 - job-template:
1080     # Job template for Java merge jobs on multiple architectures
1081     #
1082     # The purpose of this job template is to:
1083     # 1. Run parallel {project-name}-{stream}-verify-java jobs for each supported architecture
1084     # 2. Build and push a docker manifest list for the images created by
1085     #    the previous jobs
1086
1087     name: '{project-name}-multiarch-{stream}-merge-java'
1088     node: '{build-node}'
1089     project-type: multijob
1090     disabled: '{obj:disabled}'
1091     pattern: '**'
1092
1093     parameters:
1094       - lf-infra-parameters:
1095           project: '{project}'
1096           stream: '{stream}'
1097           branch: '{branch}'
1098       - string:
1099           name: DOCKER_REGISTRY
1100           default: 'none'
1101       - string:
1102           name: DOCKERHUB_REGISTRY
1103           default: 'registry-1.docker.io'
1104
1105     properties:
1106       - throttle:
1107           max-per-node: 1
1108           option: 'project'
1109       - build-blocker:
1110           use-build-blocker: true
1111           blocking-jobs:
1112             - '{project-name}-.*-merge-.*'
1113           blocking-level: 'NODE'
1114
1115     scm:
1116       - gerrit-trigger-scm:
1117           refspec: ''
1118           choosing-strategy: 'default'
1119           submodule-recursive: '{submodule-recursive}'
1120
1121     wrappers:
1122       - infra-wrappers:
1123           build-timeout: '{build-timeout}'
1124
1125     triggers:
1126       - gerrit-trigger-patch-merged:
1127           server: '{server-name}'
1128           project: '{project}'
1129           branch: '{branch}'
1130           files: '{pattern}'
1131
1132     builders:
1133       - multijob:
1134           name: 'build docker images'
1135           condition: ALWAYS
1136           execution-type: PARALLEL
1137           projects:
1138             - name: '{project-name}-amd64-{stream}-merge-java'
1139               kill-phase-on: FAILURE
1140               current-parameters: true
1141             - name: '{project-name}-arm64-{stream}-merge-java'
1142               kill-phase-on: NEVER
1143               current-parameters: true
1144       - multijob:
1145           name: 'publish docker manifest'
1146           condition: SUCCESSFUL
1147           execution-type: PARALLEL
1148           projects:
1149             - name: '{project-name}-docker-manifest-{stream}'
1150               current-parameters: true
1151               predefined-parameters: |
1152                 PARENT_JOB_NAME=$JOB_NAME
1153                 DOCKERHUB_REGISTRY=docker.io