Fix: Update gradle job for build and publish
[releng/global-jjb.git] / jjb / lf-gradle-jobs.yaml
1 ####################
2 # COMMON FUNCTIONS #
3 ####################
4
5 - _lf_gradle_common: &lf_gradle_common
6     name: lf-gradle-common
7
8     ######################
9     # Default parameters #
10     ######################
11
12     branch: master
13     build-days-to-keep: 7
14     build-timeout: 60
15     disable-job: false
16     git-url: "$GIT_URL/$PROJECT"
17     github-url: https://github.com
18     java-version: openjdk17
19     publish-credential: ""
20     publish-directory: ""
21     publish-file-extension: jar
22     publish-url: ""
23     stream: master
24     submodule-recursive: true
25     submodule-timeout: 10
26     submodule-disable: false
27     cron: "@daily"
28     wrapper: true
29
30     archive-artifacts: >
31       **/*.log
32       **/hs_err_*.log
33       **/target/**/feature.xml
34       **/target/failsafe-reports/failsafe-summary.xml
35       **/target/surefire-reports/*-output.txt
36
37     #####################
38     # Job Configuration #
39     #####################
40
41     project-type: freestyle
42     node: "{build-node}"
43
44     properties:
45       - lf-infra-properties:
46           build-days-to-keep: "{build-days-to-keep}"
47
48     parameters:
49       - lf-infra-parameters:
50           project: "{project}"
51           branch: "{branch}"
52           stream: "{stream}"
53       - string:
54           name: ARCHIVE_ARTIFACTS
55           default: "{archive-artifacts}"
56           description: Artifacts to archive to the logs server.
57
58     wrappers:
59       - lf-infra-wrappers:
60           build-timeout: "{build-timeout}"
61           jenkins-ssh-credential: "{jenkins-ssh-credential}"
62       - credentials-binding:
63           - username-password-separated:
64               credential-id: "{publish-credential}"
65               username: NEXUS_USERNAME
66               password: NEXUS_PASSWORD
67     publishers:
68       - lf-infra-publish
69
70     gerrit_gradle_verify_triggers:
71       - patchset-created-event:
72           exclude-drafts: true
73           exclude-trivial-rebase: false
74           exclude-no-code-change: false
75       - draft-published-event
76       - comment-added-contains-event:
77           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
78
79     gerrit_gradle_merge_triggers:
80       - change-merged-event
81       - comment-added-contains-event:
82           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
83
84     gerrit_trigger_file_paths:
85       - compare-type: REG_EXP
86         pattern: ".*"
87
88 - job-template:
89     name: "{project-name}-gradle-build-{stream}"
90     id: gerrit-gradle-build
91     <<: *lf_gradle_common
92
93     builders:
94       - lf-infra-pre-build
95       - lf-update-java-alternatives:
96           java-version: "{java-version}"
97       - lf-infra-docker-login:
98           global-settings-file: "global-settings"
99           settings-file: "{mvn-settings}"
100       - gradle:
101           wrapper: "{wrapper}"
102           executable: true
103           tasks: |
104             build
105
106     scm:
107       - lf-infra-gerrit-scm:
108           jenkins-ssh-credential: "{jenkins-ssh-credential}"
109           git-url: "{git-url}"
110           refspec: "$GERRIT_REFSPEC"
111           branch: "$GERRIT_BRANCH"
112           submodule-recursive: "{submodule-recursive}"
113           submodule-timeout: "{submodule-timeout}"
114           submodule-disable: "{submodule-disable}"
115           choosing-strategy: gerrit
116
117     triggers:
118       - gerrit:
119           server-name: "{gerrit-server-name}"
120           trigger-on: "{obj:gerrit_gradle_verify_triggers}"
121           projects:
122             - project-compare-type: ANT
123               project-pattern: "{project}"
124               branches:
125                 - branch-compare-type: ANT
126                   branch-pattern: "**/{branch}"
127               file-paths: "{obj:gerrit_trigger_file_paths}"
128
129 - job-template:
130     name: "{project-name}-gradle-build-{stream}"
131     id: github-gradle-build
132     <<: *lf_gradle_common
133
134     builders:
135       - lf-infra-pre-build
136       - lf-update-java-alternatives:
137           java-version: "{java-version}"
138       - lf-infra-docker-login:
139           global-settings-file: "global-settings"
140           settings-file: "{mvn-settings}"
141       - gradle:
142           wrapper: "{wrapper}"
143           executable: true
144           tasks: |
145             build
146
147     scm:
148       - lf-infra-github-scm:
149           url: "{git-clone-url}{github-org}/{project}"
150           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
151           branch: "$sha1"
152           submodule-recursive: "{submodule-recursive}"
153           submodule-timeout: "{submodule-timeout}"
154           submodule-disable: "{submodule-disable}"
155           choosing-strategy: default
156           jenkins-ssh-credential: "{jenkins-ssh-credential}"
157
158     triggers:
159       - github-pull-request:
160           trigger-phrase: ^(recheck|reverify)$
161           only-trigger-phrase: false
162           status-context: "Gradle Verify"
163           permit-all: true
164           github-hooks: true
165           white-list-target-branches:
166             - "{branch}"
167
168 - job-template:
169     name: "{project-name}-gradle-publish-jar-{stream}"
170     id: gerrit-gradle-publish-jar
171     <<: *lf_gradle_common
172
173     builders:
174       - lf-infra-pre-build
175       - lf-update-java-alternatives:
176           java-version: "{java-version}"
177       - lf-infra-docker-login:
178           global-settings-file: "global-settings"
179           settings-file: "{mvn-settings}"
180       - gradle:
181           wrapper: "{wrapper}"
182           executable: true
183           tasks: |
184             shadowJar
185       - inject:
186           properties-content: |
187             NEXUS_URL={publish-url}
188             DIRECTORY={publish-directory}
189             FILE_EXTENSION={publish-file-extension}
190       - shell: !include-raw-escape:
191           - ../shell/nexus-upload.sh
192     scm:
193       - lf-infra-gerrit-scm:
194           jenkins-ssh-credential: "{jenkins-ssh-credential}"
195           git-url: "{git-url}"
196           refspec: "$GERRIT_REFSPEC"
197           branch: "$GERRIT_BRANCH"
198           submodule-recursive: "{submodule-recursive}"
199           submodule-timeout: "{submodule-timeout}"
200           submodule-disable: "{submodule-disable}"
201           choosing-strategy: default
202
203     triggers:
204       - gerrit:
205           server-name: "{gerrit-server-name}"
206           trigger-on: "{obj:gerrit_gradle_merge_triggers}"
207           projects:
208             - project-compare-type: ANT
209               project-pattern: "{project}"
210               branches:
211                 - branch-compare-type: ANT
212                   branch-pattern: "**/{branch}"
213               file-paths: "{obj:gerrit_trigger_file_paths}"