프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / MARKUS_html.template @ b4c32ebf

이력 | 보기 | 이력해설 | 다운로드 (11.8 KB)

1 b6c25f7a humkyung
<!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 4186a324 taeseongkim
  <table width=100% style="border:1px dotted">
133 9e758326 taeseongkim
    <tr bgcolor=bgcolor<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> >
134 b6c25f7a humkyung
      <td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">ARTIFACTS</font></td>
135
    </tr>
136 52b694de taeseongkim
    <table width=100% style="border:1px dotted">
137 9e758326 taeseongkim
    <tr>
138 52b694de taeseongkim
      <td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">APP CAST</font></td>
139 9e758326 taeseongkim
    </tr>
140
          <tr>
141 52b694de taeseongkim
            <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 ff62875b taeseongkim
          <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 52b694de taeseongkim
      <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 f78f01b2 taeseongkim
          <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 b9d33939 taeseongkim
      </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 52b694de taeseongkim
      </tr>
189
          <tr></tr>
190
      <tr>
191
        <td>- HYOSUNG -</td>
192
      </tr>
193 4186a324 taeseongkim
      <tr>
194 f78f01b2 taeseongkim
          <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 4186a324 taeseongkim
      </tr>
196 52b694de taeseongkim
       <tr></tr>
197 4186a324 taeseongkim
      <tr>
198 52b694de taeseongkim
        <td>- S&I -</td>
199 4186a324 taeseongkim
      </tr>
200
      <tr>
201 f78f01b2 taeseongkim
          <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 4186a324 taeseongkim
      </tr>
203 52b694de taeseongkim
      </table>
204 9affc916 taeseongkim
      <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
      <tr>
220
        <td>- HYOSUNG -</td>
221
      </tr>
222
      <tr>
223
          <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>
224
      </tr>
225
       <tr></tr>
226
      <tr>
227
        <td>- S&I -</td>
228
      </tr>
229
      <tr>
230 b4c32ebf taeseongkim
          <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>
231 9affc916 taeseongkim
      </tr>
232
      </table>
233 397bd003 taeseongkim
     <!--
234
       <tr>
235 a39b5801 taeseongkim
          <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>
236 4186a324 taeseongkim
      </tr>
237
      <tr>
238 a39b5801 taeseongkim
          <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>
239 4186a324 taeseongkim
      </tr>
240 d213f02d taeseongkim
     -->
241 a39b5801 taeseongkim
    </tr>
242 4186a324 taeseongkim
  </table>
243 b6c25f7a humkyung
<% } %>
244
245
  <% 
246
  def artifacts = build.artifacts
247
  if ( artifacts != null && artifacts.size() > 0 ) { %>
248
  <table class="section">
249
    <tr class="tr-title">
250
      <td class="td-title">BUILD ARTIFACTS</td>
251
    </tr>
252
    <% artifacts.each() {
253
      f -> %>
254
      <tr>
255
        <td>
256
          <a href="${rooturl}${build.url}artifact/${f}">${f}</a>
257
      </td>
258
    </tr>
259
    <% } %>
260
  </table>
261
  <br/>
262
  <% } %>
263
264
<!-- MAVEN ARTIFACTS -->
265
  <%
266
  try {
267
    def mbuilds = build.moduleBuilds
268
    if ( mbuilds != null ) { %>
269
  <table class="section">
270
    <tr class="tr-title">
271
      <td class="td-title">BUILD ARTIFACTS</td>
272
    </tr>
273
      <%
274
      try {
275
        mbuilds.each() {
276
          m -> %>
277
    <tr>
278
      <td class="td-header-maven-module">${m.key.displayName}</td>
279
    </tr>
280
          <%
281
          m.value.each() { 
282
            mvnbld -> def artifactz = mvnbld.artifacts
283
            if ( artifactz != null && artifactz.size() > 0) { %>
284
    <tr>
285
      <td class="td-maven-artifact">
286
              <% artifactz.each() {
287
                f -> %>
288
        <a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a><br/>
289
              <% } %>
290
      </td>
291
    </tr>
292
            <% }
293
          }
294
        }
295
      } catch(e) {
296
        // we don't do anything
297
      } %>
298
  </table>
299
  <br/>
300
    <% }
301
  } catch(e) {
302
    // we don't do anything
303
  } %>
304
305
<!-- JUnit TEMPLATE -->
306
307
  <%
308
  def junitResultList = it.JUnitTestResult
309
  try {
310
    def cucumberTestResultAction = it.getAction("org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction")
311
    junitResultList.add( cucumberTestResultAction.getResult() )
312
  } catch(e) {
313
    //cucumberTestResultAction not exist in this build
314
  }
315
  if ( junitResultList.size() > 0 ) { %>
316
  <table class="section">
317
    <tr class="tr-title">
318
      <td class="td-title" colspan="5">${junitResultList.first().displayName}</td>
319
    </tr>
320
    <tr>
321
        <td class="td-title-tests">Name</td>
322
        <td class="td-title-tests">Failed</td>
323
        <td class="td-title-tests">Passed</td>
324
        <td class="td-title-tests">Skipped</td>
325
        <td class="td-title-tests">Total</td>
326
      </tr>
327
    <% junitResultList.each {
328
      junitResult -> junitResult.getChildren().each {
329
        packageResult -> %>
330
    <tr>
331
      <td>${packageResult.getName()}</td>
332
      <td>${packageResult.getFailCount()}</td>
333
      <td>${packageResult.getPassCount()}</td>
334
      <td>${packageResult.getSkipCount()}</td>
335
      <td>${packageResult.getPassCount() + packageResult.getFailCount() + packageResult.getSkipCount()}</td>
336
    </tr>
337
    <% packageResult.getPassedTests().findAll({it.getStatus().toString() == "FIXED";}).each{
338
        test -> %>
339
            <tr>
340
              <td class="test test-fixed" colspan="5">
341
                ${test.getFullName()} ${test.getStatus()}
342
              </td>
343
            </tr>
344
        <% } %>
345
        <% packageResult.getFailedTests().sort({a,b -> a.getAge() <=> b.getAge()}).each{
346
          failed_test -> %>
347
    <tr>
348
      <td class="test test-failed" colspan="5">
349
        ${failed_test.getFullName()} (Age: ${failed_test.getAge()})
350
      </td>
351
    </tr>
352
        <% }
353
      }
354
    } %>
355
  </table>
356
  <br/>
357
  <% } %>
358
359
<!-- CONSOLE OUTPUT -->
360
  <%
361
  if ( build.result == hudson.model.Result.FAILURE ) { %>
362
  <table width=100% style="border:1px dotted" cellpadding="0" cellspacing="0">
363
    <tr bgcolor=<%= (build.result == null || build.result.toString() == 'SUCCESS') ? '#27AE60' : build.result.toString() == 'FAILURE' ? '#E74C3C' : '#f4e242' %> >
364
      <td style="padding-left: 5px; font-weight: bold;"><font color="white" size="3">CONSOLE OUTPUT</font></td>
365
    </tr>
366
    <%         build.getLog(100).each() {
367
      line -> %>
368
          <tr>
369
      <td style="font-family:Courier New">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</td>
370
    </tr>
371
    <% } %>
372
  </table>
373
  <br/>
374
  <% } %>
375
</BODY>
376
</html>
클립보드 이미지 추가 (최대 크기: 500 MB)