Merge "Adding an Ubuntu 18.04 Docker build node"
[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 - job-template:
455     # Job template for Java merge jobs that takes a maven template
456     #
457     # The purpose of this job template is to run:
458     # 1. maven clean deploy -P {mvn-profile}
459     #
460     # Required Variables:
461     #     branch:    git branch (eg. stable/lithium or master)
462
463     <<: *merge_java_defaults
464     name: '{project-name}-{stream}-merge-profile-java'
465
466     builders:
467       - lf-infra-pre-build
468       - provide-maven-settings:
469           global-settings-file: 'global-settings'
470           settings-file: '{mvn-settings}'
471
472       - docker-login
473
474       - maven-target:
475           maven-version: '{maven-version}'
476           goals: 'clean deploy -P {mvn-profile} -B
477             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
478           settings: '{mvn-settings}'
479           settings-type: cfp
480           global-settings: 'global-settings'
481           global-settings-type: cfp
482           properties:
483             - docker.pull.registry=nexus3.onap.org:10001
484             - docker.push.registry=nexus3.onap.org:10003
485
486 - job-template:
487     # Job template for Java merge jobs with POM not at the root
488     #
489     # The purpose of this job template is to run:
490     # 1. maven clean deploy
491     #
492     # This job supports subprojects.
493     #
494     # Required Variables:
495     #     branch:    git branch (eg. stable/lithium or master)
496     #     pom:       name/location of the pom.xml file relative to the workspace
497     #     pattern:   ant file-path pattern relative to the workspace used to
498     #                trigger the job
499
500     <<: *merge_java_defaults
501     name: '{project-name}-{stream}-{subproject}-merge-java'
502
503 - job-template: &docker_java_defaults
504     # Job template for Docker daily jobs
505     #
506     # The purpose of this job template is to run:
507     # 1. login to the docker registry
508     # 2. docker push
509     #
510     # Required Variables:
511     #     branch:    git branch (eg. stable/lithium or master)
512
513     name: '{project-name}-{stream}-docker-java-daily'
514     id: '{project-name}-{stream}-docker-java-daily'
515     project-type: freestyle
516     node: '{build-node}'
517     disabled: '{disabled}'
518     properties:
519       - infra-properties:
520           build-days-to-keep: '{build-days-to-keep}'
521
522     parameters:
523       - infra-parameters:
524           project: '{project}'
525           branch: '{branch}'
526           refspec: 'refs/heads/{branch}'
527           artifacts: '{archive-artifacts}'
528       - maven-exec:
529           maven-version: '{maven-version}'
530       - maven-params:
531           mvn-params: '{mvn-params}'
532
533     scm:
534       - gerrit-trigger-scm:
535           refspec: ''
536           choosing-strategy: 'default'
537           submodule-recursive: '{submodule-recursive}'
538
539     wrappers:
540       - infra-wrappers:
541           build-timeout: '{build-timeout}'
542
543     triggers:
544       # 12 AM UTC
545       - timed: '@daily'
546       - gerrit-trigger-release-manually:
547           server: '{server-name}'
548           project: '{project}'
549           branch: '{branch}'
550
551     builders:
552       - lf-infra-pre-build
553       - provide-maven-settings:
554           global-settings-file: 'global-settings'
555           settings-file: '{mvn-settings}'
556
557       - docker-login
558
559       - maven-docker-push-daily:
560           maven-version: '{maven-version}'
561           mvn-settings: '{mvn-settings}'
562           pom: '{docker-pom}'
563           # use default as mvn-profile if profile is not needed
564           mvn-profile: '{mvn-profile}'
565           mvn-params: '{mvn-params}'
566
567     publishers:
568       - infra-shiplogs:
569           maven-version: '{maven-version}'
570
571 - job-template:
572     # Job template for Docker daily jobs
573     #
574     # The purpose of this job template is to run:
575     # 1. login to the docker registry
576     # 2. docker push
577     #
578     # Required Variables:
579     #     branch:    git branch (eg. stable/lithium or master)
580
581     <<: *docker_java_defaults
582     name: '{project-name}-{stream}-docker-java-daily'
583     id: docker-java-daily
584     node: '{build-node}'
585     wrappers:
586       - infra-wrappers-docker-build:
587           build-timeout: '{build-timeout}'
588
589 - job-template:
590     # Job template for building & pushing docker images
591     #
592     # The purpose of this job template is to run:
593     #  1. login to the docker registry
594     #  2. run a specified shell builder
595     #
596     # Required Variables:
597     #     pom:       name/location of the pom.xml file relative to the workspace
598     #     maven-properties: properties passed to maven
599
600     name: '{project-name}-{stream}-docker-java-shell-daily'
601     project-type: freestyle
602     node: '{build-node}'
603     disabled: '{disabled}'
604     properties:
605       - infra-properties:
606           build-days-to-keep: '{build-days-to-keep}'
607
608     parameters:
609       - infra-parameters:
610           project: '{project}'
611           branch: '{branch}'
612           refspec: 'refs/heads/{branch}'
613           artifacts: '{archive-artifacts}'
614       - maven-exec:
615           maven-version: '{maven-version}'
616
617     scm:
618       - gerrit-trigger-scm:
619           refspec: ''
620           choosing-strategy: 'default'
621           submodule-recursive: '{submodule-recursive}'
622
623     wrappers:
624       - infra-wrappers:
625           build-timeout: '{build-timeout}'
626
627     triggers:
628       # 12 AM UTC
629       - timed: '@daily'
630       - gerrit-trigger-release-manually:
631           server: '{server-name}'
632           project: '{project}'
633           branch: '{branch}'
634
635     builders:
636       - lf-infra-pre-build
637       - provide-maven-settings:
638           global-settings-file: 'global-settings'
639           settings-file: '{mvn-settings}'
640
641       - docker-login
642
643       - maven-target:
644           maven-version: '{maven-version}'
645           goals: '{mvn-goals}'
646           settings: '{mvn-settings}'
647           settings-type: cfp
648           global-settings: 'global-settings'
649           global-settings-type: cfp
650
651       - shell: '{script}'
652
653     publishers:
654       - infra-shiplogs:
655           maven-version: '{maven-version}'
656
657 - job-template:
658     # Job template for building & pushing docker images
659     #
660     # The purpose of this job template is to run:
661     #  1. login to the docker registry
662     #  2. run a specified shell builder
663     #
664     # Required Variables:
665     #     pom:       name/location of the pom.xml file relative to the workspace
666     #     maven-properties: properties passed to maven
667
668     name: '{project-name}-{stream}-{subproject}-docker-java-shell-daily'
669     project-type: freestyle
670     node: '{build-node}'
671     disabled: '{disabled}'
672     properties:
673       - infra-properties:
674           build-days-to-keep: '{build-days-to-keep}'
675
676     parameters:
677       - infra-parameters:
678           project: '{project}'
679           branch: '{branch}'
680           refspec: 'refs/heads/{branch}'
681           artifacts: '{archive-artifacts}'
682       - maven-exec:
683           maven-version: '{maven-version}'
684
685     scm:
686       - gerrit-trigger-scm:
687           refspec: ''
688           choosing-strategy: 'default'
689           submodule-recursive: '{submodule-recursive}'
690
691     wrappers:
692       - infra-wrappers:
693           build-timeout: '{build-timeout}'
694
695     triggers:
696       # 12 AM UTC
697       - timed: '@daily'
698       - gerrit-trigger-release-manually:
699           server: '{server-name}'
700           project: '{project}'
701           branch: '{branch}'
702
703     builders:
704       - lf-infra-pre-build
705       - provide-maven-settings:
706           global-settings-file: 'global-settings'
707           settings-file: '{mvn-settings}'
708
709       - docker-login
710
711       - maven-target:
712           maven-version: '{maven-version}'
713           pom: '{pom}'
714           goals: '{mvn-goals}'
715           settings: '{mvn-settings}'
716           settings-type: cfp
717           global-settings: 'global-settings'
718           global-settings-type: cfp
719
720       - shell: '{script}'
721
722     publishers:
723       - infra-shiplogs:
724           maven-version: '{maven-version}'
725
726 - job-template:
727     # Job template for building & pushing docker images
728     #
729     # The purpose of this job template is to run:
730     #  1. login to the docker registry
731     #  2. inject a version.properties file and set versions
732     #  3. run a specified shell builder
733     #
734     # Required Variables:
735     #     pom:       name/location of the pom.xml file relative to the workspace
736     #     maven-properties: properties passed to maven
737
738     name: '{project-name}-{stream}-docker-java-version-shell-daily'
739     project-type: freestyle
740     node: '{build-node}'
741     disabled: '{disabled}'
742     properties:
743       - infra-properties:
744           build-days-to-keep: '{build-days-to-keep}'
745
746     parameters:
747       - infra-parameters:
748           project: '{project}'
749           branch: '{branch}'
750           refspec: 'refs/heads/{branch}'
751           artifacts: '{archive-artifacts}'
752       - maven-exec:
753           maven-version: '{maven-version}'
754
755     scm:
756       - gerrit-trigger-scm:
757           refspec: ''
758           choosing-strategy: 'default'
759           submodule-recursive: '{submodule-recursive}'
760
761     wrappers:
762       - infra-wrappers:
763           build-timeout: '{build-timeout}'
764
765     triggers:
766       # 12 AM UTC
767       - timed: '@daily'
768       - gerrit-trigger-release-manually:
769           server: '{server-name}'
770           project: '{project}'
771           branch: '{branch}'
772
773     builders:
774       - lf-infra-pre-build
775       - provide-maven-settings:
776           global-settings-file: 'global-settings'
777           settings-file: '{mvn-settings}'
778
779       - inject:
780           properties-file: version.properties
781       - maven-set-release-version:
782           maven-version: '{maven-version}'
783           mvn-settings: '{mvn-settings}'
784           pom:
785
786       - docker-login
787
788       - maven-target:
789           maven-version: '{maven-version}'
790           goals: '{mvn-goals}'
791           settings: '{mvn-settings}'
792           settings-type: cfp
793           global-settings: 'global-settings'
794           global-settings-type: cfp
795
796       - shell: '{script}'
797
798     publishers:
799       - infra-shiplogs:
800           maven-version: '{maven-version}'
801
802 - job-template:
803     # Job template for building & pushing docker images
804     #
805     # The purpose of this job template is to run:
806     #  1. login to the docker registry
807     #  2. inject a version.properties file and set versions
808     #  3. run a specified shell builder
809     #
810     # This template supports subprojects.
811     #
812     # Required Variables:
813     #     pom:       name/location of the pom.xml file relative to the workspace
814     #     maven-properties: properties passed to maven
815
816     name: '{project-name}-{stream}-{subproject}-docker-java-version-shell-daily'
817     project-type: freestyle
818     node: 'ubuntu1604-docker-8c-8g'
819     disabled: '{disabled}'
820     properties:
821       - infra-properties:
822           build-days-to-keep: '{build-days-to-keep}'
823
824     parameters:
825       - infra-parameters:
826           project: '{project}'
827           branch: '{branch}'
828           refspec: 'refs/heads/{branch}'
829           artifacts: '{archive-artifacts}'
830       - maven-exec:
831           maven-version: '{maven-version}'
832
833     scm:
834       - gerrit-trigger-scm:
835           refspec: ''
836           choosing-strategy: 'default'
837           submodule-recursive: '{submodule-recursive}'
838
839     wrappers:
840       - infra-wrappers:
841           build-timeout: '{build-timeout}'
842
843     triggers:
844       # 12 AM UTC
845       - timed: '@daily'
846       - gerrit-trigger-release-manually:
847           server: '{server-name}'
848           project: '{project}'
849           branch: '{branch}'
850
851     builders:
852       - lf-infra-pre-build
853       - provide-maven-settings:
854           global-settings-file: 'global-settings'
855           settings-file: '{mvn-settings}'
856
857       - inject:
858           properties-file: version.properties
859       - maven-set-release-version:
860           maven-version: '{maven-version}'
861           mvn-settings: '{mvn-settings}'
862           pom: '{pom}'
863
864       - docker-login
865
866       - maven-target:
867           maven-version: '{maven-version}'
868           pom: '{pom}'
869           goals: '{mvn-goals}'
870           settings: '{mvn-settings}'
871           settings-type: cfp
872           global-settings: 'global-settings'
873           global-settings-type: cfp
874
875       - shell: '{script}'
876
877     publishers:
878       - infra-shiplogs:
879           maven-version: '{maven-version}'
880
881 - job-template: &docker_version_java_defaults
882     # Job template for building & pushing docker images
883     #
884     # The purpose of this job template is to run:
885     #  1. login to the docker registry
886     #  2. inject a version.properties file and set versions
887     #  3. run a docker push
888     #
889     # Required Variables:
890     #     pom:       name/location of the pom.xml file relative to the workspace
891     #     profile:   the docker profile defined in the pom
892     #     maven-properties: properties passed to maven
893
894     name: '{project-name}-{stream}-docker-version-java-daily'
895     id: '{project-name}-{stream}-docker-version-java-daily'
896     project-type: freestyle
897     node: '{build-node}'
898     disabled: '{disabled}'
899     properties:
900       - infra-properties:
901           build-days-to-keep: '{build-days-to-keep}'
902
903     parameters:
904       - infra-parameters:
905           project: '{project}'
906           branch: '{branch}'
907           refspec: 'refs/heads/{branch}'
908           artifacts: '{archive-artifacts}'
909       - maven-exec:
910           maven-version: '{maven-version}'
911       - maven-params:
912           mvn-params: '{mvn-params}'
913
914     scm:
915       - gerrit-trigger-scm:
916           refspec: ''
917           choosing-strategy: 'default'
918           submodule-recursive: '{submodule-recursive}'
919
920     wrappers:
921       - infra-wrappers:
922           build-timeout: '{build-timeout}'
923
924     triggers:
925       # 12 AM UTC
926       - timed: '@daily'
927       - gerrit-trigger-release-manually:
928           server: '{server-name}'
929           project: '{project}'
930           branch: '{branch}'
931
932     builders:
933       - lf-infra-pre-build
934       - provide-maven-settings:
935           global-settings-file: 'global-settings'
936           settings-file: '{mvn-settings}'
937
938       - inject:
939           properties-file: version.properties
940       - maven-set-release-version:
941           maven-version: '{maven-version}'
942           mvn-settings: '{mvn-settings}'
943           pom:
944
945       - docker-login
946
947       - maven-docker-push-daily:
948           maven-version: '{maven-version}'
949           mvn-settings: '{mvn-settings}'
950           pom: '{docker-pom}'
951           # use default as mvn-profile if profile is not needed
952           mvn-profile: '{mvn-profile}'
953           mvn-params: '{mvn-params}'
954
955     publishers:
956       - infra-shiplogs:
957           maven-version: '{maven-version}'
958
959 - job-template:
960     # Job template for building & pushing docker images
961     #
962     # The purpose of this job template is to run:
963     #  1. login to the docker registry
964     #  2. inject a version.properties file and set versions
965     #  3. run a docker push
966     #
967     # Required Variables:
968     #     pom:       name/location of the pom.xml file relative to the workspace
969     #     profile:   the docker profile defined in the pom
970     #     maven-properties: properties passed to maven
971
972     <<: *docker_version_java_defaults
973     name: '{project-name}-{stream}-docker-version-java-daily'
974     id: 'docker-version-java-daily'
975     node: '{build-node}'
976     wrappers:
977       - infra-wrappers-docker-build:
978           build-timeout: '{build-timeout}'
979
980 - job-template:
981     # Job template for building & pushing docker images for AAI specific repos
982     #
983     # The purpose of this job template is to run:
984     #  1. login to the docker registry
985     #  2. run maven goals
986     #  3. run include-docker-push.sh
987     #
988     # Required Variables:
989     #     pom:       name/location of the pom.xml file relative to the workspace
990     #     maven-properties: properties passed to maven
991
992     name: '{project-name}-{stream}-aai-docker-java-daily'
993     project-type: freestyle
994     node: '{build-node}'
995     docker-image-name: ''
996     disabled: '{disabled}'
997     properties:
998       - infra-properties:
999           build-days-to-keep: '{build-days-to-keep}'
1000
1001     parameters:
1002       - infra-parameters:
1003           project: '{project}'
1004           branch: '{branch}'
1005           refspec: 'refs/heads/{branch}'
1006           artifacts: '{archive-artifacts}'
1007       - maven-exec:
1008           maven-version: '{maven-version}'
1009       - docker-image-name:
1010           docker-image-name: '{docker-image-name}'
1011
1012     scm:
1013       - gerrit-trigger-scm:
1014           refspec: ''
1015           choosing-strategy: 'default'
1016           submodule-recursive: '{submodule-recursive}'
1017
1018     wrappers:
1019       - infra-wrappers:
1020           build-timeout: '{build-timeout}'
1021
1022     triggers:
1023       # 12 AM UTC
1024       - timed: '@daily'
1025       - gerrit-trigger-release-manually:
1026           server: '{server-name}'
1027           project: '{project}'
1028           branch: '{branch}'
1029
1030     builders:
1031       - lf-infra-pre-build
1032       - provide-maven-settings:
1033           global-settings-file: 'global-settings'
1034           settings-file: '{mvn-settings}'
1035
1036       - docker-login
1037
1038       - maven-target:
1039           maven-version: '{maven-version}'
1040           pom: 'pom.xml'
1041           goals: 'clean install -DskipTests -B
1042             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
1043           settings: '{mvn-settings}'
1044           settings-type: cfp
1045           global-settings: 'global-settings'
1046           global-settings-type: cfp
1047
1048       - maven-target:
1049           maven-version: '{maven-version}'
1050           pom: '{pom}'
1051           goals: '{mvn-goals}'
1052           settings: '{mvn-settings}'
1053           settings-type: cfp
1054           global-settings: 'global-settings'
1055           global-settings-type: cfp
1056           properties:
1057             - maven.test.skip=true
1058             - docker.pull.registry=nexus3.onap.org:10001
1059             - docker.push.registry=nexus3.onap.org:10003
1060
1061       - shell: !include-raw-escape: include-docker-push.sh
1062
1063     publishers:
1064       - infra-shiplogs:
1065           maven-version: '{maven-version}'
1066
1067 - job-template:
1068     # Job template for Java merge jobs for SDC specific repos
1069     #
1070     # The purpose of this job template is to run:
1071     # 1. maven clean deploy
1072     #
1073     # Required Variables:
1074     #     branch:    git branch (eg. stable/lithium or master)
1075
1076     <<: *merge_java_defaults
1077     name: '{project-name}-{stream}-sdc-merge-java'
1078
1079     node: '{build-node}'
1080     build-timeout: 120
1081
1082     builders:
1083       - lf-infra-pre-build
1084       - provide-maven-settings:
1085           global-settings-file: 'global-settings'
1086           settings-file: '{mvn-settings}'
1087
1088       - docker-login
1089
1090       - maven-docker-push-daily:
1091           maven-version: '{maven-version}'
1092           mvn-settings: '{mvn-settings}'
1093           pom: '{docker-pom}'
1094           # use default as mvn-profile if profile is not needed
1095           mvn-profile: '{mvn-profile}'
1096           mvn-params: ''
1097
1098 - job-template:
1099     # Job template for Java merge jobs on multiple architectures
1100     #
1101     # The purpose of this job template is to:
1102     # 1. Run parallel {project-name}-{stream}-verify-java jobs for each supported architecture
1103     # 2. Build and push a docker manifest list for the images created by
1104     #    the previous jobs
1105
1106     name: '{project-name}-multiarch-{stream}-merge-java'
1107     node: '{build-node}'
1108     project-type: multijob
1109     disabled: '{obj:disabled}'
1110     pattern: '**'
1111
1112     parameters:
1113       - lf-infra-parameters:
1114           project: '{project}'
1115           stream: '{stream}'
1116           branch: '{branch}'
1117       - string:
1118           name: DOCKER_REGISTRY
1119           default: 'none'
1120       - string:
1121           name: DOCKERHUB_REGISTRY
1122           default: 'registry-1.docker.io'
1123
1124     properties:
1125       - throttle:
1126           max-per-node: 1
1127           option: 'project'
1128       - build-blocker:
1129           use-build-blocker: true
1130           blocking-jobs:
1131             - '{project-name}-.*-merge-.*'
1132           blocking-level: 'NODE'
1133
1134     scm:
1135       - gerrit-trigger-scm:
1136           refspec: ''
1137           choosing-strategy: 'default'
1138           submodule-recursive: '{submodule-recursive}'
1139
1140     wrappers:
1141       - infra-wrappers:
1142           build-timeout: '{build-timeout}'
1143
1144     triggers:
1145       - gerrit-trigger-patch-merged:
1146           server: '{server-name}'
1147           project: '{project}'
1148           branch: '{branch}'
1149           files: '{pattern}'
1150
1151     builders:
1152       - multijob:
1153           name: 'build docker images'
1154           condition: ALWAYS
1155           execution-type: PARALLEL
1156           projects:
1157             - name: '{project-name}-amd64-{stream}-merge-java'
1158               kill-phase-on: FAILURE
1159               current-parameters: true
1160             - name: '{project-name}-arm64-{stream}-merge-java'
1161               kill-phase-on: NEVER
1162               current-parameters: true
1163       - multijob:
1164           name: 'publish docker manifest'
1165           condition: SUCCESSFUL
1166           execution-type: PARALLEL
1167           projects:
1168             - name: '{project-name}-docker-manifest-{stream}'
1169               current-parameters: true
1170               predefined-parameters: |
1171                 PARENT_JOB_NAME=$JOB_NAME
1172                 DOCKERHUB_REGISTRY=docker.io