Feat: Add 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     stream: master
20     submodule-recursive: true
21     submodule-timeout: 10
22     submodule-disable: false
23     cron: "@daily"
24     wrapper: true
25
26     archive-artifacts: >
27       **/*.log
28       **/hs_err_*.log
29       **/target/**/feature.xml
30       **/target/failsafe-reports/failsafe-summary.xml
31       **/target/surefire-reports/*-output.txt
32
33     #####################
34     # Job Configuration #
35     #####################
36
37     project-type: freestyle
38     node: "{build-node}"
39
40     properties:
41       - lf-infra-properties:
42           build-days-to-keep: "{build-days-to-keep}"
43
44     parameters:
45       - lf-infra-parameters:
46           project: "{project}"
47           branch: "{branch}"
48           stream: "{stream}"
49       - string:
50           name: ARCHIVE_ARTIFACTS
51           default: "{archive-artifacts}"
52           description: Artifacts to archive to the logs server.
53
54     wrappers:
55       - lf-infra-wrappers:
56           build-timeout: "{build-timeout}"
57           jenkins-ssh-credential: "{jenkins-ssh-credential}"
58
59     publishers:
60       - lf-infra-publish
61
62     gerrit_gradle_triggers:
63       - patchset-created-event:
64           exclude-drafts: true
65           exclude-trivial-rebase: false
66           exclude-no-code-change: false
67       - draft-published-event
68       - comment-added-contains-event:
69           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
70
71     gerrit_trigger_file_paths:
72       - compare-type: REG_EXP
73         pattern: ".*"
74
75 - job-template:
76     name: "{project-name}-gradle-build-{stream}"
77     id: gerrit-gradle-build
78     <<: *lf_gradle_common
79
80     builders:
81       - lf-infra-pre-build
82       - lf-update-java-alternatives:
83           java-version: "{java-version}"
84       - lf-infra-docker-login:
85           global-settings-file: "global-settings"
86           settings-file: "{mvn-settings}"
87       - gradle:
88           wrapper: "{wrapper}"
89           executable: true
90           tasks: |
91             build
92
93     scm:
94       - lf-infra-gerrit-scm:
95           jenkins-ssh-credential: "{jenkins-ssh-credential}"
96           git-url: "{git-url}"
97           refspec: "$GERRIT_REFSPEC"
98           branch: "$GERRIT_BRANCH"
99           submodule-recursive: "{submodule-recursive}"
100           submodule-timeout: "{submodule-timeout}"
101           submodule-disable: "{submodule-disable}"
102           choosing-strategy: default
103
104     triggers:
105       - timed: "{obj:cron}"
106       - gerrit:
107           server-name: "{gerrit-server-name}"
108           trigger-on: "{obj:gerrit_gradle_triggers}"
109           projects:
110             - project-compare-type: ANT
111               project-pattern: "{project}"
112               branches:
113                 - branch-compare-type: ANT
114                   branch-pattern: "**/{branch}"
115               file-paths: "{obj:gerrit_trigger_file_paths}"
116
117 - job-template:
118     name: "{project-name}-gradle-build-{stream}"
119     id: github-gradle-build
120     <<: *lf_gradle_common
121
122     builders:
123       - lf-infra-pre-build
124       - lf-update-java-alternatives:
125           java-version: "{java-version}"
126       - lf-infra-docker-login:
127           global-settings-file: "global-settings"
128           settings-file: "{mvn-settings}"
129       - gradle:
130           wrapper: "{wrapper}"
131           executable: true
132           tasks: |
133             build
134
135     scm:
136       - lf-infra-github-scm:
137           url: "{git-clone-url}{github-org}/{project}"
138           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
139           branch: "$sha1"
140           submodule-recursive: "{submodule-recursive}"
141           submodule-timeout: "{submodule-timeout}"
142           submodule-disable: "{submodule-disable}"
143           choosing-strategy: default
144           jenkins-ssh-credential: "{jenkins-ssh-credential}"
145
146     triggers:
147       - github-pull-request:
148           trigger-phrase: ^(recheck|reverify)$
149           only-trigger-phrase: false
150           status-context: "Gradle Verify"
151           permit-all: true
152           github-hooks: true
153           white-list-target-branches:
154             - "{branch}"
155
156 - job-template:
157     name: "{project-name}-gradle-publish-jar-{stream}"
158     id: gerrit-gradle-publish-jar
159     <<: *lf_gradle_common
160
161     builders:
162       - lf-infra-pre-build
163       - lf-update-java-alternatives:
164           java-version: "{java-version}"
165       - lf-infra-docker-login:
166           global-settings-file: "global-settings"
167           settings-file: "{mvn-settings}"
168       - gradle:
169           wrapper: "{wrapper}"
170           executable: true
171           tasks: |
172             shadowJar
173             publish
174
175     scm:
176       - lf-infra-gerrit-scm:
177           jenkins-ssh-credential: "{jenkins-ssh-credential}"
178           git-url: "{git-url}"
179           refspec: "$GERRIT_REFSPEC"
180           branch: "$GERRIT_BRANCH"
181           submodule-recursive: "{submodule-recursive}"
182           submodule-timeout: "{submodule-timeout}"
183           submodule-disable: "{submodule-disable}"
184           choosing-strategy: default
185
186     triggers:
187       - timed: "{obj:cron}"
188       - gerrit:
189           server-name: "{gerrit-server-name}"
190           trigger-on: "{obj:gerrit_gradle_triggers}"
191           projects:
192             - project-compare-type: ANT
193               project-pattern: "{project}"
194               branches:
195                 - branch-compare-type: ANT
196                   branch-pattern: "**/{branch}"
197               file-paths: "{obj:gerrit_trigger_file_paths}"