markus / MARKUS_html.template @ 9affc916
이력 | 보기 | 이력해설 | 다운로드 (12.1 KB)
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></tr> |
197 |
<tr> |
198 |
<td>- S&I -</td> |
199 |
</tr> |
200 |
<tr> |
201 |
<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> |
202 |
</tr> |
203 |
</table> |
204 |
<tr></tr> |
205 |
<table width=100% style="border:1px dotted"> |
206 |
<tr> |
207 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">KCOM API</font></td> |
208 |
</tr> |
209 |
<tr></tr> |
210 |
<tr> |
211 |
<td>- DAELIM -</td> |
212 |
</tr> |
213 |
<tr> |
214 |
<tr> |
215 |
<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> |
216 |
</tr> |
217 |
<tr></tr> |
218 |
<tr> |
219 |
<td>- DAELIM Test -</td> |
220 |
</tr> |
221 |
<tr> |
222 |
<tr> |
223 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/KCOM_API/Daelim_test/KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip">KcomAPI-<%= build.getEnvVars()["BUILD_NAME"] %>.zip </a></td> |
224 |
</tr> |
225 |
<tr></tr> |
226 |
<tr> |
227 |
<td>- HYOSUNG -</td> |
228 |
</tr> |
229 |
<tr> |
230 |
<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> |
231 |
</tr> |
232 |
<tr></tr> |
233 |
<tr> |
234 |
<td>- S&I -</td> |
235 |
</tr> |
236 |
<tr> |
237 |
<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> |
238 |
</tr> |
239 |
</table> |
240 |
<!-- |
241 |
<tr> |
242 |
<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> |
243 |
</tr> |
244 |
<tr> |
245 |
<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> |
246 |
</tr> |
247 |
--> |
248 |
</tr> |
249 |
</table> |
250 |
<% } %> |
251 |
|
252 |
<% |
253 |
def artifacts = build.artifacts |
254 |
if ( artifacts != null && artifacts.size() > 0 ) { %> |
255 |
<table class="section"> |
256 |
<tr class="tr-title"> |
257 |
<td class="td-title">BUILD ARTIFACTS</td> |
258 |
</tr> |
259 |
<% artifacts.each() { |
260 |
f -> %> |
261 |
<tr> |
262 |
<td> |
263 |
<a href="${rooturl}${build.url}artifact/${f}">${f}</a> |
264 |
</td> |
265 |
</tr> |
266 |
<% } %> |
267 |
</table> |
268 |
<br/> |
269 |
<% } %> |
270 |
|
271 |
<!-- MAVEN ARTIFACTS --> |
272 |
<% |
273 |
try { |
274 |
def mbuilds = build.moduleBuilds |
275 |
if ( mbuilds != null ) { %> |
276 |
<table class="section"> |
277 |
<tr class="tr-title"> |
278 |
<td class="td-title">BUILD ARTIFACTS</td> |
279 |
</tr> |
280 |
<% |
281 |
try { |
282 |
mbuilds.each() { |
283 |
m -> %> |
284 |
<tr> |
285 |
<td class="td-header-maven-module">${m.key.displayName}</td> |
286 |
</tr> |
287 |
<% |
288 |
m.value.each() { |
289 |
mvnbld -> def artifactz = mvnbld.artifacts |
290 |
if ( artifactz != null && artifactz.size() > 0) { %> |
291 |
<tr> |
292 |
<td class="td-maven-artifact"> |
293 |
<% artifactz.each() { |
294 |
f -> %> |
295 |
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a><br/> |
296 |
<% } %> |
297 |
</td> |
298 |
</tr> |
299 |
<% } |
300 |
} |
301 |
} |
302 |
} catch(e) { |
303 |
// we don't do anything |
304 |
} %> |
305 |
</table> |
306 |
<br/> |
307 |
<% } |
308 |
} catch(e) { |
309 |
// we don't do anything |
310 |
} %> |
311 |
|
312 |
<!-- JUnit TEMPLATE --> |
313 |
|
314 |
<% |
315 |
def junitResultList = it.JUnitTestResult |
316 |
try { |
317 |
def cucumberTestResultAction = it.getAction("org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction") |
318 |
junitResultList.add( cucumberTestResultAction.getResult() ) |
319 |
} catch(e) { |
320 |
//cucumberTestResultAction not exist in this build |
321 |
} |
322 |
if ( junitResultList.size() > 0 ) { %> |
323 |
<table class="section"> |
324 |
<tr class="tr-title"> |
325 |
<td class="td-title" colspan="5">${junitResultList.first().displayName}</td> |
326 |
</tr> |
327 |
<tr> |
328 |
<td class="td-title-tests">Name</td> |
329 |
<td class="td-title-tests">Failed</td> |
330 |
<td class="td-title-tests">Passed</td> |
331 |
<td class="td-title-tests">Skipped</td> |
332 |
<td class="td-title-tests">Total</td> |
333 |
</tr> |
334 |
<% junitResultList.each { |
335 |
junitResult -> junitResult.getChildren().each { |
336 |
packageResult -> %> |
337 |
<tr> |
338 |
<td>${packageResult.getName()}</td> |
339 |
<td>${packageResult.getFailCount()}</td> |
340 |
<td>${packageResult.getPassCount()}</td> |
341 |
<td>${packageResult.getSkipCount()}</td> |
342 |
<td>${packageResult.getPassCount() + packageResult.getFailCount() + packageResult.getSkipCount()}</td> |
343 |
</tr> |
344 |
<% packageResult.getPassedTests().findAll({it.getStatus().toString() == "FIXED";}).each{ |
345 |
test -> %> |
346 |
<tr> |
347 |
<td class="test test-fixed" colspan="5"> |
348 |
${test.getFullName()} ${test.getStatus()} |
349 |
</td> |
350 |
</tr> |
351 |
<% } %> |
352 |
<% packageResult.getFailedTests().sort({a,b -> a.getAge() <=> b.getAge()}).each{ |
353 |
failed_test -> %> |
354 |
<tr> |
355 |
<td class="test test-failed" colspan="5"> |
356 |
${failed_test.getFullName()} (Age: ${failed_test.getAge()}) |
357 |
</td> |
358 |
</tr> |
359 |
<% } |
360 |
} |
361 |
} %> |
362 |
</table> |
363 |
<br/> |
364 |
<% } %> |
365 |
|
366 |
<!-- CONSOLE OUTPUT --> |
367 |
<% |
368 |
if ( build.result == hudson.model.Result.FAILURE ) { %> |
369 |
<table width=100% style="border:1px dotted" cellpadding="0" cellspacing="0"> |
370 |
<tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> > |
371 |
<td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CONSOLE OUTPUT</font></td> |
372 |
</tr> |
373 |
<% build.getLog(100).each() { |
374 |
line -> %> |
375 |
<tr> |
376 |
<td style="font-family:Courier New">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</td> |
377 |
</tr> |
378 |
<% } %> |
379 |
</table> |
380 |
<br/> |
381 |
<% } %> |
382 |
</BODY> |
383 |
</html> |