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