Fix: Update Gradle publish job
[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       - timed: "{obj:cron}"
119       - gerrit:
120           server-name: "{gerrit-server-name}"
121           trigger-on: "{obj:gerrit_gradle_verify_triggers}"
122           projects:
123             - project-compare-type: ANT
124               project-pattern: "{project}"
125               branches:
126                 - branch-compare-type: ANT
127                   branch-pattern: "**/{branch}"
128               file-paths: "{obj:gerrit_trigger_file_paths}"
129
130 - job-template:
131     name: "{project-name}-gradle-build-{stream}"
132     id: github-gradle-build
133     <<: *lf_gradle_common
134
135     builders:
136       - lf-infra-pre-build
137       - lf-update-java-alternatives:
138           java-version: "{java-version}"
139       - lf-infra-docker-login:
140           global-settings-file: "global-settings"
141           settings-file: "{mvn-settings}"
142       - gradle:
143           wrapper: "{wrapper}"
144           executable: true
145           tasks: |
146             build
147
148     scm:
149       - lf-infra-github-scm:
150           url: "{git-clone-url}{github-org}/{project}"
151           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
152           branch: "$sha1"
153           submodule-recursive: "{submodule-recursive}"
154           submodule-timeout: "{submodule-timeout}"
155           submodule-disable: "{submodule-disable}"
156           choosing-strategy: default
157           jenkins-ssh-credential: "{jenkins-ssh-credential}"
158
159     triggers:
160       - github-pull-request:
161           trigger-phrase: ^(recheck|reverify)$
162           only-trigger-phrase: false
163           status-context: "Gradle Verify"
164           permit-all: true
165           github-hooks: true
166           white-list-target-branches:
167             - "{branch}"
168
169 - job-template:
170     name: "{project-name}-gradle-publish-jar-{stream}"
171     id: gerrit-gradle-publish-jar
172     <<: *lf_gradle_common
173
174     builders:
175       - lf-infra-pre-build
176       - lf-update-java-alternatives:
177           java-version: "{java-version}"
178       - lf-infra-docker-login:
179           global-settings-file: "global-settings"
180           settings-file: "{mvn-settings}"
181       - gradle:
182           wrapper: "{wrapper}"
183           executable: true
184           tasks: |
185             shadowJar
186       - inject:
187           properties-content: |
188             NEXUS_URL={publish-url}
189             DIRECTORY={publish-directory}
190             FILE_EXTENSION={publish-file-extension}
191       - shell: !include-raw-escape:
192           - ../shell/nexus-upload.sh
193     scm:
194       - lf-infra-gerrit-scm:
195           jenkins-ssh-credential: "{jenkins-ssh-credential}"
196           git-url: "{git-url}"
197           refspec: "$GERRIT_REFSPEC"
198           branch: "$GERRIT_BRANCH"
199           submodule-recursive: "{submodule-recursive}"
200           submodule-timeout: "{submodule-timeout}"
201           submodule-disable: "{submodule-disable}"
202           choosing-strategy: default
203
204     triggers:
205       - timed: "{obj:cron}"
206       - gerrit:
207           server-name: "{gerrit-server-name}"
208           trigger-on: "{obj:gerrit_gradle_merge_triggers}"
209           projects:
210             - project-compare-type: ANT
211               project-pattern: "{project}"
212               branches:
213                 - branch-compare-type: ANT
214                   branch-pattern: "**/{branch}"
215               file-paths: "{obj:gerrit_trigger_file_paths}"