DevOps Email - SGajre/Tutorial GitHub Wiki
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define">
<title>${project.name}</title> <style> body table, td, th, p, h1, h2 { margin:0; font:normal normal 100% Georgia, Serif; background-color: #ffffff; } h1, h2 { border-bottom:dotted 1px #999999; padding:5px; margin-top:10px; margin-bottom:10px; color: #000000; font: normal bold 100% Georgia,Serif; background-color:#f0f0f0; } tr.gray { background-color:#f0f0f0; } h2 { padding:5px; margin-top:5px; margin-bottom:5px; font: italic bold 100% Georgia,Serif; } .bg2 { color:black; background-color:#E0E0E0; font-size:100% } th { font-weight: bold; } tr, td, th { padding:2px; } td.test_passed { color:blue; } td.test_failed { color:red; } td.test_skipped { color:grey; } .console { font: normal normal 90% Courier New, monotype; padding:0px; margin:0px; } div.content, div.header { background: #ffffff; border: dotted 1px #666; margin: 2px; content: 2px; padding: 2px; } table.border, th.border, td.border { border: 1px solid black; border-collapse:collapse; } td.right { text-align:right; } </style>
|
BUILD ${build.result} |
| Build URL | ${rooturl}${build.url} |
| Project: | ${project.name} |
| Date of build: | ${it.timestampString} |
| Build duration: | ${build.durationString} |
| Build cause: | ${cause.shortDescription} |
| Build description: | ${build.description} |
| Built on: | ${build.builtOnStr} master |
<!-- HEALTH TEMPLATE -->
<div class="content">
<j:set var="healthIconSize" value="16x16" />
<j:set var="healthReports" value="${project.buildHealthReports}" />
<j:if test="${healthReports!=null}">
<h1>Health Report</h1>
<table>
<tr>
<th>W</th>
<th>Description</th>
<th>Score</th>
</tr>
<j:forEach var="healthReport" items="${healthReports}">
<tr>
<td>
<img src="${rooturl}${healthReport.getIconUrl(healthIconSize)}" />
</td>
<td>${healthReport.description}</td>
<td>${healthReport.score}</td>
</tr>
</j:forEach>
</table>
<br />
</j:if>
</div>
<!-- CHANGE SET -->
<div class="content">
<j:set var="changeSet" value="${build.changeSet}" />
<j:if test="${changeSet!=null}">
<j:set var="hadChanges" value="false" />
<a href="${rooturl}${build.url}/changes">
<h1>Changes</h1>
</a>
<j:forEach var="cs" items="${changeSet.logs}" varStatus="loop">
<j:set var="hadChanges" value="true" />
<h2>${cs.msgAnnotated}</h2>
<p>by <em>${cs.author}</em></p>
<table>
<j:forEach var="p" items="${cs.affectedFiles}">
<tr>
<td width="10%">${spc}${p.editType.name}</td>
<td>
<tt>${p.path}</tt>
</td>
</tr>
</j:forEach>
</table>
</j:forEach>
<j:if test="${!hadChanges}">
<p>No Changes</p>
</j:if>
<br />
</j:if>
</div>
<j:set var="jacocoAction" value="${it.getAction('hudson.plugins.jacoco.JacocoBuildAction')}" />
<j:if test="${jacocoAction!=null}">
<j:set var="jacocoResult" value="${jacocoAction.result}" />
<j:if test="${jacocoResult!=null}">
<a href="${rooturl}${build.url}jacoco/">
<h1>Jacoco Results</h1>
</a>
<table class="border">
<tr>
<th class="border">Package</th>
<th class="border">Branches</th>
<th class="border">Complexity</th>
<th class="border">Instructions</th>
<th class="border">Methods</th>
<th class="border">Lines</th>
<th class="border">Classes</th>
</tr>
<tr>
<td class="border">
<a href="${rooturl}${build.url}jacoco/"><tt>OVERALL</tt></a>
</td>
<td class="border right">${jacocoResult.branchCoverage.percentage}%</td>
<td class="border right">${jacocoResult.complexityScore.percentage}%</td>
<td class="border right">${jacocoResult.instructionCoverage.percentage}%</td>
<td class="border right">${jacocoResult.methodCoverage.percentage}%</td>
<td class="border right">${jacocoResult.lineCoverage.percentage}%</td>
<td class="border right">${jacocoResult.classCoverage.percentage}%</td>
</tr>
</table>
</j:if>
</j:if>
<!-- JUnit TEMPLATE -->
<j:set var="junitResultList" value="${it.JUnitTestResult}" />
<j:if test="${junitResultList.isEmpty()!=true}">
<div class="content">
<a href="${rooturl}${build.url}/testReport">
<h1>JUnit Tests</h1>
</a>
<table class="border">
<tr>
<th class="border">Package</th>
<th class="border">Failed</th>
<th class="border">Passed</th>
<th class="border">Skipped</th>
<th class="border">Total</th>
</tr>
<j:forEach var="junitResult" items="${it.JUnitTestResult}">
<j:forEach var="packageResult" items="${junitResult.getChildren()}">
<tr>
<td class="border">
<tt>${packageResult.getName()}</tt>
</td>
<td class="border test_failed">${packageResult.getFailCount()}</td>
<td class="border test_passed">${packageResult.getPassCount()}</td>
<td class="border test_skipped">${packageResult.getSkipCount()}</td>
<td class="border">
<b>${packageResult.getPassCount()+packageResult.getFailCount()+packageResult.getSkipCount()}</b>
</td>
</tr>
<j:forEach var="failed_test" items="${packageResult.getFailedTests()}">
<tr>
<td class="test_failed" colspan="5">
<tt>${failed_test.getFullName()}</tt>
</td>
</tr>
</j:forEach>
</j:forEach>
</j:forEach>
</table>
<br />
</div>
</j:if>
<div class="content">
<!-- CONSOLE OUTPUT -->
<a href="${rooturl}${build.url}/console">
<h1>Console Output</h1>
</a>
<table class="console">
<j:forEach var="line" items="${build.getLog(10)}">
<tr>
<td><tt>${line}</tt></td>
</tr>
</j:forEach>
</table>
<br />
</div>