markus / HYTOS_html.template.html @ 30d84e1a
이력 | 보기 | 이력해설 | 다운로드 (7.7 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=<%= (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</td> |
138 |
</tr>
|
139 |
<tr>
|
140 |
<td><a href="http://www.devdoftech.co.kr:9081/artifactory/${project.name}/Setup/${project.name}-<%= build.getEnvVars()["BUILD_NAME"] %>.msi">${project.name}-<%= 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>
|