개정판 6a09c9f1
Fix: html template 이름 변경
Change-Id: I3d33933fc6e0a243bef80d51d5b6ea8597f92a89
MARKUS_html.2024.04.19.template | ||
---|---|---|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
|
2 |
<html> |
|
3 |
<head> |
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
|
5 |
<STYLE type="text/css"> |
|
6 |
BODY, TABLE, TD, TH, P { |
|
7 |
font-family: Calibri, Verdana, Helvetica, sans serif; |
|
8 |
font-size: 12px; |
|
9 |
color: black; |
|
10 |
} |
|
11 |
.console { |
|
12 |
font-family: Courier New; |
|
13 |
} |
|
14 |
.filesChanged { |
|
15 |
width: 10%; |
|
16 |
padding-left: 10px; |
|
17 |
} |
|
18 |
.section { |
|
19 |
width: 100%; |
|
20 |
border: thin black dotted; |
|
21 |
} |
|
22 |
.td-title-main { |
|
23 |
color: white; |
|
24 |
font-size: 200%; |
|
25 |
padding-left: 5px; |
|
26 |
font-weight: bold; |
|
27 |
} |
|
28 |
.td-title { |
|
29 |
color: white; |
|
30 |
font-size: 120%; |
|
31 |
font-weight: bold; |
|
32 |
padding-left: 5px; |
|
33 |
text-transform: uppercase; |
|
34 |
} |
|
35 |
.td-title-tests { |
|
36 |
font-weight: bold; |
|
37 |
font-size: 120%; |
|
38 |
} |
|
39 |
.td-header-maven-module { |
|
40 |
font-weight: bold; |
|
41 |
font-size: 120%; |
|
42 |
} |
|
43 |
.td-maven-artifact { |
|
44 |
padding-left: 5px; |
|
45 |
} |
|
46 |
.tr-title { |
|
47 |
background-color: <%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %>; |
|
48 |
} |
|
49 |
.test { |
|
50 |
padding-left: 20px; |
|
51 |
} |
|
52 |
.test-fixed { |
|
53 |
color: #27AE60; |
|
54 |
} |
|
55 |
.test-failed { |
|
56 |
color: #E74C3C; |
|
57 |
} |
|
58 |
</STYLE> |
|
59 |
</head> |
|
60 |
<BODY> |
|
61 |
<!-- BUILD RESULT --> |
|
62 |
<table width=100% style="border:1px dotted"> |
|
63 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
64 |
<td style="padding-left: 5px; font-weight: bold;" colspan=2> |
|
65 |
<font color="white" size="5"> BUILD ${build.result ?: 'COMPLETED'} </font> |
|
66 |
</td> |
|
67 |
</tr> |
|
68 |
<tr> |
|
69 |
<td>URL:</td> |
|
70 |
<td><A href="${rooturl}${build.url}">${rooturl}${build.url}</A></td> |
|
71 |
</tr> |
|
72 |
<tr> |
|
73 |
<td>Project:</td> |
|
74 |
<td>${project.name}</td> |
|
75 |
</tr> |
|
76 |
<tr> |
|
77 |
<td>Date:</td> |
|
78 |
<td>${it.timestampString}</td> |
|
79 |
</tr> |
|
80 |
<tr> |
|
81 |
<td>Duration:</td> |
|
82 |
<td>${build.durationString}</td> |
|
83 |
</tr> |
|
84 |
<tr> |
|
85 |
<td>Cause:</td> |
|
86 |
<td><% build.causes.each() { cause -> %> ${cause.shortDescription} <% } %></td> |
|
87 |
</tr> |
|
88 |
</table> |
|
89 |
<br/> |
|
90 |
|
|
91 |
<!-- CHANGE SET --> |
|
92 |
<% |
|
93 |
def changeSets = build.changeSets |
|
94 |
if(changeSets != null) { |
|
95 |
def hadChanges = false %> |
|
96 |
<table width=100% style="border:1px dotted"> |
|
97 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
98 |
<td style="padding-left: 5px; font-weight: bold;" colspan="2"><font color="white" size="3">CHANGES</font></td> |
|
99 |
</tr> |
|
100 |
<% changeSets.each() { |
|
101 |
cs_list -> cs_list.each() { |
|
102 |
cs -> hadChanges = true %> |
|
103 |
<tr> |
|
104 |
<td> |
|
105 |
Revision |
|
106 |
<%= cs.metaClass.hasProperty('commitId') ? cs.commitId : cs.metaClass.hasProperty('revision') ? cs.revision : cs.metaClass.hasProperty('changeNumber') ? cs.changeNumber : "" %> |
|
107 |
by <B><%= cs.author %></B> |
|
108 |
</td> |
|
109 |
<td>${cs.msgAnnotated}</td> |
|
110 |
</tr> |
|
111 |
<% cs.affectedFiles.each() { |
|
112 |
p -> %> |
|
113 |
<tr> |
|
114 |
<td class="filesChanged">${p.editType.name}</td> |
|
115 |
<td>${p.path}</td> |
|
116 |
</tr> |
|
117 |
<% } |
|
118 |
} |
|
119 |
} |
|
120 |
if ( !hadChanges ) { %> |
|
121 |
<tr> |
|
122 |
<td colspan="2">No Changes</td> |
|
123 |
</tr> |
|
124 |
<% } %> |
|
125 |
</table> |
|
126 |
<br/> |
|
127 |
<% } %> |
|
128 |
|
|
129 |
<!-- ARTIFACTS --> |
|
130 |
<% |
|
131 |
if ( build.result != hudson.model.Result.FAILURE ) { %> |
|
132 |
<table width=100% style="border:1px dotted"> |
|
133 |
<tr bgcolor=bgcolor<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
134 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">ARTIFACTS</font></td> |
|
135 |
</tr> |
|
136 |
<table width=100% style="border:1px dotted"> |
|
137 |
<tr> |
|
138 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">APP CAST</font></td> |
|
139 |
</tr> |
|
140 |
<tr> |
|
141 |
<tr> |
|
142 |
<td>- DAELIM -</td> |
|
143 |
</tr> |
|
144 |
<tr> |
|
145 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/Daelim/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
146 |
</tr> |
|
147 |
<tr></tr> |
|
148 |
<td>- DAELIM Test -</td> |
|
149 |
</tr> |
|
150 |
<tr> |
|
151 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/Daelim_test/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
152 |
</tr> |
|
153 |
<tr></tr> |
|
154 |
<tr> |
|
155 |
<td>- HYOSUNG -</td> |
|
156 |
</tr> |
|
157 |
<tr> |
|
158 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/HS/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
159 |
</tr> |
|
160 |
<tr></tr> |
|
161 |
<tr> |
|
162 |
<td>- S&I -</td> |
|
163 |
</tr> |
|
164 |
<tr> |
|
165 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/SNI/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
166 |
</tr> |
|
167 |
</table> |
|
168 |
<tr></tr> |
|
169 |
<table width=100% style="border:1px dotted"> |
|
170 |
<tr> |
|
171 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CLIENT SETUP</font></td> |
|
172 |
</tr> |
|
173 |
<tr></tr> |
|
174 |
<tr> |
|
175 |
<td>- DAELIM -</td> |
|
176 |
</tr> |
|
177 |
<tr> |
|
178 |
<tr> |
|
179 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/Daelim/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
180 |
</tr> |
|
181 |
<tr></tr> |
|
182 |
<tr> |
|
183 |
<td>- DAELIM Test -</td> |
|
184 |
</tr> |
|
185 |
<tr> |
|
186 |
<tr> |
|
187 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/Daelim_test/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
188 |
</tr> |
|
189 |
<tr></tr> |
|
190 |
<tr> |
|
191 |
<td>- HYOSUNG -</td> |
|
192 |
</tr> |
|
193 |
<tr> |
|
194 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/HS/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
195 |
</tr> |
|
196 |
<tr> |
|
197 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/HS/Setup_x86-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup_x86-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
198 |
</tr> |
|
199 |
<tr></tr> |
|
200 |
<tr> |
|
201 |
<td>- S&I -</td> |
|
202 |
</tr> |
|
203 |
<tr> |
|
204 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/SNI/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
205 |
</tr> |
|
206 |
</table> |
|
207 |
<tr></tr> |
|
208 |
<table width=100% style="border:1px dotted"> |
|
209 |
<tr> |
|
210 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">KCOM API</font></td> |
|
211 |
</tr> |
|
212 |
<tr></tr> |
|
213 |
<tr> |
|
214 |
<td>- DAELIM -</td> |
|
215 |
</tr> |
|
216 |
<tr> |
|
217 |
<tr> |
|
218 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/Daelim/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
219 |
</tr> |
|
220 |
<tr></tr> |
|
221 |
<tr> |
|
222 |
<tr> |
|
223 |
<td>- HYOSUNG -</td> |
|
224 |
</tr> |
|
225 |
<tr> |
|
226 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/HS/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
227 |
</tr> |
|
228 |
<tr></tr> |
|
229 |
<tr> |
|
230 |
<td>- S&I -</td> |
|
231 |
</tr> |
|
232 |
<tr> |
|
233 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/SNI/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
234 |
</tr> |
|
235 |
</table> |
|
236 |
<!-- |
|
237 |
<tr> |
|
238 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Setup/FinalService/FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
239 |
</tr> |
|
240 |
<tr> |
|
241 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Setup/ConvertService/ConvertService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">ConvertService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
242 |
</tr> |
|
243 |
--> |
|
244 |
</tr> |
|
245 |
</table> |
|
246 |
<% } %> |
|
247 |
|
|
248 |
<% |
|
249 |
def artifacts = build.artifacts |
|
250 |
if ( artifacts != null && artifacts.size() > 0 ) { %> |
|
251 |
<table class="section"> |
|
252 |
<tr class="tr-title"> |
|
253 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
254 |
</tr> |
|
255 |
<% artifacts.each() { |
|
256 |
f -> %> |
|
257 |
<tr> |
|
258 |
<td> |
|
259 |
<a href="${rooturl}${build.url}artifact/${f}">${f}</a> |
|
260 |
</td> |
|
261 |
</tr> |
|
262 |
<% } %> |
|
263 |
</table> |
|
264 |
<br/> |
|
265 |
<% } %> |
|
266 |
|
|
267 |
<!-- MAVEN ARTIFACTS --> |
|
268 |
<% |
|
269 |
try { |
|
270 |
def mbuilds = build.moduleBuilds |
|
271 |
if ( mbuilds != null ) { %> |
|
272 |
<table class="section"> |
|
273 |
<tr class="tr-title"> |
|
274 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
275 |
</tr> |
|
276 |
<% |
|
277 |
try { |
|
278 |
mbuilds.each() { |
|
279 |
m -> %> |
|
280 |
<tr> |
|
281 |
<td class="td-header-maven-module">${m.key.displayName}</td> |
|
282 |
</tr> |
|
283 |
<% |
|
284 |
m.value.each() { |
|
285 |
mvnbld -> def artifactz = mvnbld.artifacts |
|
286 |
if ( artifactz != null && artifactz.size() > 0) { %> |
|
287 |
<tr> |
|
288 |
<td class="td-maven-artifact"> |
|
289 |
<% artifactz.each() { |
|
290 |
f -> %> |
|
291 |
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a><br/> |
|
292 |
<% } %> |
|
293 |
</td> |
|
294 |
</tr> |
|
295 |
<% } |
|
296 |
} |
|
297 |
} |
|
298 |
} catch(e) { |
|
299 |
// we don't do anything |
|
300 |
} %> |
|
301 |
</table> |
|
302 |
<br/> |
|
303 |
<% } |
|
304 |
} catch(e) { |
|
305 |
// we don't do anything |
|
306 |
} %> |
|
307 |
|
|
308 |
<!-- JUnit TEMPLATE --> |
|
309 |
|
|
310 |
<% |
|
311 |
def junitResultList = it.JUnitTestResult |
|
312 |
try { |
|
313 |
def cucumberTestResultAction = it.getAction("org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction") |
|
314 |
junitResultList.add( cucumberTestResultAction.getResult() ) |
|
315 |
} catch(e) { |
|
316 |
//cucumberTestResultAction not exist in this build |
|
317 |
} |
|
318 |
if ( junitResultList.size() > 0 ) { %> |
|
319 |
<table class="section"> |
|
320 |
<tr class="tr-title"> |
|
321 |
<td class="td-title" colspan="5">${junitResultList.first().displayName}</td> |
|
322 |
</tr> |
|
323 |
<tr> |
|
324 |
<td class="td-title-tests">Name</td> |
|
325 |
<td class="td-title-tests">Failed</td> |
|
326 |
<td class="td-title-tests">Passed</td> |
|
327 |
<td class="td-title-tests">Skipped</td> |
|
328 |
<td class="td-title-tests">Total</td> |
|
329 |
</tr> |
|
330 |
<% junitResultList.each { |
|
331 |
junitResult -> junitResult.getChildren().each { |
|
332 |
packageResult -> %> |
|
333 |
<tr> |
|
334 |
<td>${packageResult.getName()}</td> |
|
335 |
<td>${packageResult.getFailCount()}</td> |
|
336 |
<td>${packageResult.getPassCount()}</td> |
|
337 |
<td>${packageResult.getSkipCount()}</td> |
|
338 |
<td>${packageResult.getPassCount() + packageResult.getFailCount() + packageResult.getSkipCount()}</td> |
|
339 |
</tr> |
|
340 |
<% packageResult.getPassedTests().findAll({it.getStatus().toString() == "FIXED";}).each{ |
|
341 |
test -> %> |
|
342 |
<tr> |
|
343 |
<td class="test test-fixed" colspan="5"> |
|
344 |
${test.getFullName()} ${test.getStatus()} |
|
345 |
</td> |
|
346 |
</tr> |
|
347 |
<% } %> |
|
348 |
<% packageResult.getFailedTests().sort({a,b -> a.getAge() <=> b.getAge()}).each{ |
|
349 |
failed_test -> %> |
|
350 |
<tr> |
|
351 |
<td class="test test-failed" colspan="5"> |
|
352 |
${failed_test.getFullName()} (Age: ${failed_test.getAge()}) |
|
353 |
</td> |
|
354 |
</tr> |
|
355 |
<% } |
|
356 |
} |
|
357 |
} %> |
|
358 |
</table> |
|
359 |
<br/> |
|
360 |
<% } %> |
|
361 |
|
|
362 |
<!-- CONSOLE OUTPUT --> |
|
363 |
<% |
|
364 |
if ( build.result == hudson.model.Result.FAILURE ) { %> |
|
365 |
<table width=100% style="border:1px dotted" cellpadding="0" cellspacing="0"> |
|
366 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
367 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CONSOLE OUTPUT</font></td> |
|
368 |
</tr> |
|
369 |
<% build.getLog(100).each() { |
|
370 |
line -> %> |
|
371 |
<tr> |
|
372 |
<td style="font-family:Courier New">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</td> |
|
373 |
</tr> |
|
374 |
<% } %> |
|
375 |
</table> |
|
376 |
<br/> |
|
377 |
<% } %> |
|
378 |
</BODY> |
|
379 |
</html> |
MARKUS_html.template | ||
---|---|---|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
|
2 |
<html> |
|
3 |
<head> |
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
|
5 |
<STYLE type="text/css"> |
|
6 |
BODY, TABLE, TD, TH, P { |
|
7 |
font-family: Calibri, Verdana, Helvetica, sans serif; |
|
8 |
font-size: 12px; |
|
9 |
color: black; |
|
10 |
} |
|
11 |
.console { |
|
12 |
font-family: Courier New; |
|
13 |
} |
|
14 |
.filesChanged { |
|
15 |
width: 10%; |
|
16 |
padding-left: 10px; |
|
17 |
} |
|
18 |
.section { |
|
19 |
width: 100%; |
|
20 |
border: thin black dotted; |
|
21 |
} |
|
22 |
.td-title-main { |
|
23 |
color: white; |
|
24 |
font-size: 200%; |
|
25 |
padding-left: 5px; |
|
26 |
font-weight: bold; |
|
27 |
} |
|
28 |
.td-title { |
|
29 |
color: white; |
|
30 |
font-size: 120%; |
|
31 |
font-weight: bold; |
|
32 |
padding-left: 5px; |
|
33 |
text-transform: uppercase; |
|
34 |
} |
|
35 |
.td-title-tests { |
|
36 |
font-weight: bold; |
|
37 |
font-size: 120%; |
|
38 |
} |
|
39 |
.td-header-maven-module { |
|
40 |
font-weight: bold; |
|
41 |
font-size: 120%; |
|
42 |
} |
|
43 |
.td-maven-artifact { |
|
44 |
padding-left: 5px; |
|
45 |
} |
|
46 |
.tr-title { |
|
47 |
background-color: <%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %>; |
|
48 |
} |
|
49 |
.test { |
|
50 |
padding-left: 20px; |
|
51 |
} |
|
52 |
.test-fixed { |
|
53 |
color: #27AE60; |
|
54 |
} |
|
55 |
.test-failed { |
|
56 |
color: #E74C3C; |
|
57 |
} |
|
58 |
</STYLE> |
|
59 |
</head> |
|
60 |
<BODY> |
|
61 |
<!-- BUILD RESULT --> |
|
62 |
<table width=100% style="border:1px dotted"> |
|
63 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
64 |
<td style="padding-left: 5px; font-weight: bold;" colspan=2> |
|
65 |
<font color="white" size="5"> BUILD ${build.result ?: 'COMPLETED'} </font> |
|
66 |
</td> |
|
67 |
</tr> |
|
68 |
<tr> |
|
69 |
<td>URL:</td> |
|
70 |
<td><A href="${rooturl}${build.url}">${rooturl}${build.url}</A></td> |
|
71 |
</tr> |
|
72 |
<tr> |
|
73 |
<td>Project:</td> |
|
74 |
<td>${project.name}</td> |
|
75 |
</tr> |
|
76 |
<tr> |
|
77 |
<td>Date:</td> |
|
78 |
<td>${it.timestampString}</td> |
|
79 |
</tr> |
|
80 |
<tr> |
|
81 |
<td>Duration:</td> |
|
82 |
<td>${build.durationString}</td> |
|
83 |
</tr> |
|
84 |
<tr> |
|
85 |
<td>Cause:</td> |
|
86 |
<td><% build.causes.each() { cause -> %> ${cause.shortDescription} <% } %></td> |
|
87 |
</tr> |
|
88 |
</table> |
|
89 |
<br/> |
|
90 |
|
|
91 |
<!-- CHANGE SET --> |
|
92 |
<% |
|
93 |
def changeSets = build.changeSets |
|
94 |
if(changeSets != null) { |
|
95 |
def hadChanges = false %> |
|
96 |
<table width=100% style="border:1px dotted"> |
|
97 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
98 |
<td style="padding-left: 5px; font-weight: bold;" colspan="2"><font color="white" size="3">CHANGES</font></td> |
|
99 |
</tr> |
|
100 |
<% changeSets.each() { |
|
101 |
cs_list -> cs_list.each() { |
|
102 |
cs -> hadChanges = true %> |
|
103 |
<tr> |
|
104 |
<td> |
|
105 |
Revision |
|
106 |
<%= cs.metaClass.hasProperty('commitId') ? cs.commitId : cs.metaClass.hasProperty('revision') ? cs.revision : cs.metaClass.hasProperty('changeNumber') ? cs.changeNumber : "" %> |
|
107 |
by <B><%= cs.author %></B> |
|
108 |
</td> |
|
109 |
<td>${cs.msgAnnotated}</td> |
|
110 |
</tr> |
|
111 |
<% cs.affectedFiles.each() { |
|
112 |
p -> %> |
|
113 |
<tr> |
|
114 |
<td class="filesChanged">${p.editType.name}</td> |
|
115 |
<td>${p.path}</td> |
|
116 |
</tr> |
|
117 |
<% } |
|
118 |
} |
|
119 |
} |
|
120 |
if ( !hadChanges ) { %> |
|
121 |
<tr> |
|
122 |
<td colspan="2">No Changes</td> |
|
123 |
</tr> |
|
124 |
<% } %> |
|
125 |
</table> |
|
126 |
<br/> |
|
127 |
<% } %> |
|
128 |
|
|
129 |
<!-- ARTIFACTS --> |
|
130 |
<% |
|
131 |
if ( build.result != hudson.model.Result.FAILURE ) { %> |
|
132 |
<table width=100% style="border:1px dotted"> |
|
133 |
<tr bgcolor=bgcolor<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
134 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">ARTIFACTS</font></td> |
|
135 |
</tr> |
|
136 |
<table width=100% style="border:1px dotted"> |
|
137 |
<tr> |
|
138 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">APP CAST</font></td> |
|
139 |
</tr> |
|
140 |
<tr> |
|
141 |
<tr> |
|
142 |
<td>- DAELIM -</td> |
|
143 |
</tr> |
|
144 |
<tr> |
|
145 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/Daelim/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
146 |
</tr> |
|
147 |
<tr></tr> |
|
148 |
<td>- DAELIM Test -</td> |
|
149 |
</tr> |
|
150 |
<tr> |
|
151 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/Daelim_test/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
152 |
</tr> |
|
153 |
<tr></tr> |
|
154 |
<tr> |
|
155 |
<td>- HYOSUNG -</td> |
|
156 |
</tr> |
|
157 |
<tr> |
|
158 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/HS/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
159 |
</tr> |
|
160 |
<tr></tr> |
|
161 |
<tr> |
|
162 |
<td>- S&I -</td> |
|
163 |
</tr> |
|
164 |
<tr> |
|
165 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/AppCast/SNI/AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">AppCast-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
166 |
</tr> |
|
167 |
</table> |
|
168 |
<tr></tr> |
|
169 |
<table width=100% style="border:1px dotted"> |
|
170 |
<tr> |
|
171 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CLIENT SETUP</font></td> |
|
172 |
</tr> |
|
173 |
<tr></tr> |
|
174 |
<tr> |
|
175 |
<td>- DAELIM -</td> |
|
176 |
</tr> |
|
177 |
<tr> |
|
178 |
<tr> |
|
179 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/Daelim/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
180 |
</tr> |
|
181 |
<tr></tr> |
|
182 |
<tr> |
|
183 |
<td>- DAELIM Test -</td> |
|
184 |
</tr> |
|
185 |
<tr> |
|
186 |
<tr> |
|
187 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/Daelim_test/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
188 |
</tr> |
|
189 |
<tr></tr> |
|
190 |
<tr> |
|
191 |
<td>- HYOSUNG -</td> |
|
192 |
</tr> |
|
193 |
<tr> |
|
194 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/HS/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
195 |
</tr> |
|
196 |
<tr> |
|
197 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/HS/Setup_x86-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup_x86-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
198 |
</tr> |
|
199 |
<tr></tr> |
|
200 |
<tr> |
|
201 |
<td>- S&I -</td> |
|
202 |
</tr> |
|
203 |
<tr> |
|
204 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Client/SNI/Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">Setup-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
205 |
</tr> |
|
206 |
</table> |
|
207 |
<tr></tr> |
|
208 |
<table width=100% style="border:1px dotted"> |
|
209 |
<tr> |
|
210 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">KCOM API</font></td> |
|
211 |
</tr> |
|
212 |
<tr></tr> |
|
213 |
<tr> |
|
214 |
<td>- DAELIM -</td> |
|
215 |
</tr> |
|
216 |
<tr> |
|
217 |
<tr> |
|
218 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/Daelim/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
219 |
</tr> |
|
220 |
<tr></tr> |
|
221 |
<tr> |
|
222 |
<tr> |
|
223 |
<td>- HYOSUNG -</td> |
|
224 |
</tr> |
|
225 |
<tr> |
|
226 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/HS/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
227 |
</tr> |
|
228 |
<tr></tr> |
|
229 |
<tr> |
|
230 |
<td>- S&I -</td> |
|
231 |
</tr> |
|
232 |
<tr> |
|
233 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/SNI/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
|
234 |
</tr> |
|
235 |
</table> |
|
236 |
<!-- |
|
237 |
<tr> |
|
238 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Setup/FinalService/FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
239 |
</tr> |
|
240 |
<tr> |
|
241 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Setup/ConvertService/ConvertService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">ConvertService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
242 |
</tr> |
|
243 |
--> |
|
244 |
</tr> |
|
245 |
</table> |
|
246 |
<% } %> |
|
247 |
|
|
248 |
<% |
|
249 |
def artifacts = build.artifacts |
|
250 |
if ( artifacts != null && artifacts.size() > 0 ) { %> |
|
251 |
<table class="section"> |
|
252 |
<tr class="tr-title"> |
|
253 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
254 |
</tr> |
|
255 |
<% artifacts.each() { |
|
256 |
f -> %> |
|
257 |
<tr> |
|
258 |
<td> |
|
259 |
<a href="${rooturl}${build.url}artifact/${f}">${f}</a> |
|
260 |
</td> |
|
261 |
</tr> |
|
262 |
<% } %> |
|
263 |
</table> |
|
264 |
<br/> |
|
265 |
<% } %> |
|
266 |
|
|
267 |
<!-- MAVEN ARTIFACTS --> |
|
268 |
<% |
|
269 |
try { |
|
270 |
def mbuilds = build.moduleBuilds |
|
271 |
if ( mbuilds != null ) { %> |
|
272 |
<table class="section"> |
|
273 |
<tr class="tr-title"> |
|
274 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
275 |
</tr> |
|
276 |
<% |
|
277 |
try { |
|
278 |
mbuilds.each() { |
|
279 |
m -> %> |
|
280 |
<tr> |
|
281 |
<td class="td-header-maven-module">${m.key.displayName}</td> |
|
282 |
</tr> |
|
283 |
<% |
|
284 |
m.value.each() { |
|
285 |
mvnbld -> def artifactz = mvnbld.artifacts |
|
286 |
if ( artifactz != null && artifactz.size() > 0) { %> |
|
287 |
<tr> |
|
288 |
<td class="td-maven-artifact"> |
|
289 |
<% artifactz.each() { |
|
290 |
f -> %> |
|
291 |
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a><br/> |
|
292 |
<% } %> |
|
293 |
</td> |
|
294 |
</tr> |
|
295 |
<% } |
|
296 |
} |
|
297 |
} |
|
298 |
} catch(e) { |
|
299 |
// we don't do anything |
|
300 |
} %> |
|
301 |
</table> |
|
302 |
<br/> |
|
303 |
<% } |
|
304 |
} catch(e) { |
|
305 |
// we don't do anything |
|
306 |
} %> |
|
307 |
|
|
308 |
<!-- JUnit TEMPLATE --> |
|
309 |
|
|
310 |
<% |
|
311 |
def junitResultList = it.JUnitTestResult |
|
312 |
try { |
|
313 |
def cucumberTestResultAction = it.getAction("org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction") |
|
314 |
junitResultList.add( cucumberTestResultAction.getResult() ) |
|
315 |
} catch(e) { |
|
316 |
//cucumberTestResultAction not exist in this build |
|
317 |
} |
|
318 |
if ( junitResultList.size() > 0 ) { %> |
|
319 |
<table class="section"> |
|
320 |
<tr class="tr-title"> |
|
321 |
<td class="td-title" colspan="5">${junitResultList.first().displayName}</td> |
|
322 |
</tr> |
|
323 |
<tr> |
|
324 |
<td class="td-title-tests">Name</td> |
|
325 |
<td class="td-title-tests">Failed</td> |
|
326 |
<td class="td-title-tests">Passed</td> |
|
327 |
<td class="td-title-tests">Skipped</td> |
|
328 |
<td class="td-title-tests">Total</td> |
|
329 |
</tr> |
|
330 |
<% junitResultList.each { |
|
331 |
junitResult -> junitResult.getChildren().each { |
|
332 |
packageResult -> %> |
|
333 |
<tr> |
|
334 |
<td>${packageResult.getName()}</td> |
|
335 |
<td>${packageResult.getFailCount()}</td> |
|
336 |
<td>${packageResult.getPassCount()}</td> |
|
337 |
<td>${packageResult.getSkipCount()}</td> |
|
338 |
<td>${packageResult.getPassCount() + packageResult.getFailCount() + packageResult.getSkipCount()}</td> |
|
339 |
</tr> |
|
340 |
<% packageResult.getPassedTests().findAll({it.getStatus().toString() == "FIXED";}).each{ |
|
341 |
test -> %> |
|
342 |
<tr> |
|
343 |
<td class="test test-fixed" colspan="5"> |
|
344 |
${test.getFullName()} ${test.getStatus()} |
|
345 |
</td> |
|
346 |
</tr> |
|
347 |
<% } %> |
|
348 |
<% packageResult.getFailedTests().sort({a,b -> a.getAge() <=> b.getAge()}).each{ |
|
349 |
failed_test -> %> |
|
350 |
<tr> |
|
351 |
<td class="test test-failed" colspan="5"> |
|
352 |
${failed_test.getFullName()} (Age: ${failed_test.getAge()}) |
|
353 |
</td> |
|
354 |
</tr> |
|
355 |
<% } |
|
356 |
} |
|
357 |
} %> |
|
358 |
</table> |
|
359 |
<br/> |
|
360 |
<% } %> |
|
361 |
|
|
362 |
<!-- CONSOLE OUTPUT --> |
|
363 |
<% |
|
364 |
if ( build.result == hudson.model.Result.FAILURE ) { %> |
|
365 |
<table width=100% style="border:1px dotted" cellpadding="0" cellspacing="0"> |
|
366 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
367 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CONSOLE OUTPUT</font></td> |
|
368 |
</tr> |
|
369 |
<% build.getLog(100).each() { |
|
370 |
line -> %> |
|
371 |
<tr> |
|
372 |
<td style="font-family:Courier New">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</td> |
|
373 |
</tr> |
|
374 |
<% } %> |
|
375 |
</table> |
|
376 |
<br/> |
|
377 |
<% } %> |
|
378 |
</BODY> |
|
379 |
</html> |
XMARKUS_html.2024.04.19.template | ||
---|---|---|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
|
2 |
<html> |
|
3 |
<head> |
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
|
5 |
<STYLE type="text/css"> |
|
6 |
BODY, TABLE, TD, TH, P { |
|
7 |
font-family: Calibri, Verdana, Helvetica, sans serif; |
|
8 |
font-size: 12px; |
|
9 |
color: black; |
|
10 |
} |
|
11 |
.console { |
|
12 |
font-family: Courier New; |
|
13 |
} |
|
14 |
.filesChanged { |
|
15 |
width: 10%; |
|
16 |
padding-left: 10px; |
|
17 |
} |
|
18 |
.section { |
|
19 |
width: 100%; |
|
20 |
border: thin black dotted; |
|
21 |
} |
|
22 |
.td-title-main { |
|
23 |
color: white; |
|
24 |
font-size: 200%; |
|
25 |
padding-left: 5px; |
|
26 |
font-weight: bold; |
|
27 |
} |
|
28 |
.td-title { |
|
29 |
color: white; |
|
30 |
font-size: 120%; |
|
31 |
font-weight: bold; |
|
32 |
padding-left: 5px; |
|
33 |
text-transform: uppercase; |
|
34 |
} |
|
35 |
.td-title-tests { |
|
36 |
font-weight: bold; |
|
37 |
font-size: 120%; |
|
38 |
} |
|
39 |
.td-header-maven-module { |
|
40 |
font-weight: bold; |
|
41 |
font-size: 120%; |
|
42 |
} |
|
43 |
.td-maven-artifact { |
|
44 |
padding-left: 5px; |
|
45 |
} |
|
46 |
.tr-title { |
|
47 |
background-color: <%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %>; |
|
48 |
} |
|
49 |
.test { |
|
50 |
padding-left: 20px; |
|
51 |
} |
|
52 |
.test-fixed { |
|
53 |
color: #27AE60; |
|
54 |
} |
|
55 |
.test-failed { |
|
56 |
color: #E74C3C; |
|
57 |
} |
|
58 |
</STYLE> |
|
59 |
</head> |
|
60 |
<BODY> |
|
61 |
<!-- BUILD RESULT --> |
|
62 |
<table width=100% style="border:1px dotted"> |
|
63 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
64 |
<td style="padding-left: 5px; font-weight: bold;" colspan=2> |
|
65 |
<font color="white" size="5"> BUILD ${build.result ?: 'COMPLETED'} </font> |
|
66 |
</td> |
|
67 |
</tr> |
|
68 |
<tr> |
|
69 |
<td>URL:</td> |
|
70 |
<td><A href="${rooturl}${build.url}">${rooturl}${build.url}</A></td> |
|
71 |
</tr> |
|
72 |
<tr> |
|
73 |
<td>Project:</td> |
|
74 |
<td>${project.name}</td> |
|
75 |
</tr> |
|
76 |
<tr> |
|
77 |
<td>Date:</td> |
|
78 |
<td>${it.timestampString}</td> |
|
79 |
</tr> |
|
80 |
<tr> |
|
81 |
<td>Duration:</td> |
|
82 |
<td>${build.durationString}</td> |
|
83 |
</tr> |
|
84 |
<tr> |
|
85 |
<td>Cause:</td> |
|
86 |
<td><% build.causes.each() { cause -> %> ${cause.shortDescription} <% } %></td> |
|
87 |
</tr> |
|
88 |
</table> |
|
89 |
<br/> |
|
90 |
|
|
91 |
<!-- CHANGE SET --> |
|
92 |
<% |
|
93 |
def changeSets = build.changeSets |
|
94 |
if(changeSets != null) { |
|
95 |
def hadChanges = false %> |
|
96 |
<table width=100% style="border:1px dotted"> |
|
97 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
98 |
<td style="padding-left: 5px; font-weight: bold;" colspan="2"><font color="white" size="3">CHANGES</font></td> |
|
99 |
</tr> |
|
100 |
<% changeSets.each() { |
|
101 |
cs_list -> cs_list.each() { |
|
102 |
cs -> hadChanges = true %> |
|
103 |
<tr> |
|
104 |
<td> |
|
105 |
Revision |
|
106 |
<%= cs.metaClass.hasProperty('commitId') ? cs.commitId : cs.metaClass.hasProperty('revision') ? cs.revision : cs.metaClass.hasProperty('changeNumber') ? cs.changeNumber : "" %> |
|
107 |
by <B><%= cs.author %></B> |
|
108 |
</td> |
|
109 |
<td>${cs.msgAnnotated}</td> |
|
110 |
</tr> |
|
111 |
<% cs.affectedFiles.each() { |
|
112 |
p -> %> |
|
113 |
<tr> |
|
114 |
<td class="filesChanged">${p.editType.name}</td> |
|
115 |
<td>${p.path}</td> |
|
116 |
</tr> |
|
117 |
<% } |
|
118 |
} |
|
119 |
} |
|
120 |
if ( !hadChanges ) { %> |
|
121 |
<tr> |
|
122 |
<td colspan="2">No Changes</td> |
|
123 |
</tr> |
|
124 |
<% } %> |
|
125 |
</table> |
|
126 |
<br/> |
|
127 |
<% } %> |
|
128 |
|
|
129 |
<!-- ARTIFACTS --> |
|
130 |
<% |
|
131 |
if ( build.result != hudson.model.Result.FAILURE ) { %> |
|
132 |
<table width=100% style="border:1px dotted"> |
|
133 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
134 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">ARTIFACTS</font></td> |
|
135 |
</tr> |
|
136 |
<tr> |
|
137 |
<td>PROGRAM</th> |
|
138 |
</tr> |
|
139 |
<tr> |
|
140 |
<td><a href="http://www.devdoftech.co.kr:8081/artifactory/${project.name}/${project.name}-<%= build.getEnvVars()["COMPANY"] %>-FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi" title="ID/PSWD = guest/q1234567U"> ${project.name}-<%= build.getEnvVars()["COMPANY"] %>-FinalService-<%= build.getEnvVars()["BUILD_NAME"] %>.msi </a></td> |
|
141 |
</tr> |
|
142 |
</table> |
|
143 |
<% } %> |
|
144 |
|
|
145 |
<% |
|
146 |
def artifacts = build.artifacts |
|
147 |
if ( artifacts != null && artifacts.size() > 0 ) { %> |
|
148 |
<table class="section"> |
|
149 |
<tr class="tr-title"> |
|
150 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
151 |
</tr> |
|
152 |
<% artifacts.each() { |
|
153 |
f -> %> |
|
154 |
<tr> |
|
155 |
<td> |
|
156 |
<a href="${rooturl}${build.url}artifact/${f}">${f}</a> |
|
157 |
</td> |
|
158 |
</tr> |
|
159 |
<% } %> |
|
160 |
</table> |
|
161 |
<br/> |
|
162 |
<% } %> |
|
163 |
|
|
164 |
<!-- MAVEN ARTIFACTS --> |
|
165 |
<% |
|
166 |
try { |
|
167 |
def mbuilds = build.moduleBuilds |
|
168 |
if ( mbuilds != null ) { %> |
|
169 |
<table class="section"> |
|
170 |
<tr class="tr-title"> |
|
171 |
<td class="td-title">BUILD ARTIFACTS</td> |
|
172 |
</tr> |
|
173 |
<% |
|
174 |
try { |
|
175 |
mbuilds.each() { |
|
176 |
m -> %> |
|
177 |
<tr> |
|
178 |
<td class="td-header-maven-module">${m.key.displayName}</td> |
|
179 |
</tr> |
|
180 |
<% |
|
181 |
m.value.each() { |
|
182 |
mvnbld -> def artifactz = mvnbld.artifacts |
|
183 |
if ( artifactz != null && artifactz.size() > 0) { %> |
|
184 |
<tr> |
|
185 |
<td class="td-maven-artifact"> |
|
186 |
<% artifactz.each() { |
|
187 |
f -> %> |
|
188 |
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a><br/> |
|
189 |
<% } %> |
|
190 |
</td> |
|
191 |
</tr> |
|
192 |
<% } |
|
193 |
} |
|
194 |
} |
|
195 |
} catch(e) { |
|
196 |
// we don't do anything |
|
197 |
} %> |
|
198 |
</table> |
|
199 |
<br/> |
|
200 |
<% } |
|
201 |
} catch(e) { |
|
202 |
// we don't do anything |
|
203 |
} %> |
|
204 |
|
|
205 |
<!-- JUnit TEMPLATE --> |
|
206 |
|
|
207 |
<% |
|
208 |
def junitResultList = it.JUnitTestResult |
|
209 |
try { |
|
210 |
def cucumberTestResultAction = it.getAction("org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction") |
|
211 |
junitResultList.add( cucumberTestResultAction.getResult() ) |
|
212 |
} catch(e) { |
|
213 |
//cucumberTestResultAction not exist in this build |
|
214 |
} |
|
215 |
if ( junitResultList.size() > 0 ) { %> |
|
216 |
<table class="section"> |
|
217 |
<tr class="tr-title"> |
|
218 |
<td class="td-title" colspan="5">${junitResultList.first().displayName}</td> |
|
219 |
</tr> |
|
220 |
<tr> |
|
221 |
<td class="td-title-tests">Name</td> |
|
222 |
<td class="td-title-tests">Failed</td> |
|
223 |
<td class="td-title-tests">Passed</td> |
|
224 |
<td class="td-title-tests">Skipped</td> |
|
225 |
<td class="td-title-tests">Total</td> |
|
226 |
</tr> |
|
227 |
<% junitResultList.each { |
|
228 |
junitResult -> junitResult.getChildren().each { |
|
229 |
packageResult -> %> |
|
230 |
<tr> |
|
231 |
<td>${packageResult.getName()}</td> |
|
232 |
<td>${packageResult.getFailCount()}</td> |
|
233 |
<td>${packageResult.getPassCount()}</td> |
|
234 |
<td>${packageResult.getSkipCount()}</td> |
|
235 |
<td>${packageResult.getPassCount() + packageResult.getFailCount() + packageResult.getSkipCount()}</td> |
|
236 |
</tr> |
|
237 |
<% packageResult.getPassedTests().findAll({it.getStatus().toString() == "FIXED";}).each{ |
|
238 |
test -> %> |
|
239 |
<tr> |
|
240 |
<td class="test test-fixed" colspan="5"> |
|
241 |
${test.getFullName()} ${test.getStatus()} |
|
242 |
</td> |
|
243 |
</tr> |
|
244 |
<% } %> |
|
245 |
<% packageResult.getFailedTests().sort({a,b -> a.getAge() <=> b.getAge()}).each{ |
|
246 |
failed_test -> %> |
|
247 |
<tr> |
|
248 |
<td class="test test-failed" colspan="5"> |
|
249 |
${failed_test.getFullName()} (Age: ${failed_test.getAge()}) |
|
250 |
</td> |
|
251 |
</tr> |
|
252 |
<% } |
|
253 |
} |
|
254 |
} %> |
|
255 |
</table> |
|
256 |
<br/> |
|
257 |
<% } %> |
|
258 |
|
|
259 |
<!-- CONSOLE OUTPUT --> |
|
260 |
<% |
|
261 |
if ( build.result == hudson.model.Result.FAILURE ) { %> |
|
262 |
<table width=100% style="border:1px dotted" cellpadding="0" cellspacing="0"> |
|
263 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
|
264 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CONSOLE OUTPUT</font></td> |
|
265 |
</tr> |
|
266 |
<% build.getLog(100).each() { |
|
267 |
line -> %> |
|
268 |
<tr> |
|
269 |
<td style="font-family:Courier New">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</td> |
|
270 |
</tr> |
|
271 |
<% } %> |
|
272 |
</table> |
|
273 |
<br/> |
|
274 |
<% } %> |
|
275 |
</BODY> |
|
276 |
</html> |
내보내기 Unified diff