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