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