-
-
Save s0undt3ch/8d220faaa3b0614ee3b0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"> | |
<STYLE> | |
@import url('http://fonts.googleapis.com/css?family=Open+Sans'); | |
body, p, table, tr, td, strong, h1, h2, h3, h4, h5, h6, blockquote, li { | |
font-family: 'Open Sans Light', 'Helvetica Neue', Helvetica, Arial, sans-serif; | |
font-size: 12px; | |
color: #333333; | |
} | |
a { color: #AA2B39; text-decoration: none; } | |
TABLE.top-table { | |
background-image: url('http://saltstack.github.io/salt-jenkins/img/saltstack_logo.png'); | |
background-repeat: no-repeat; | |
background-position: right top; | |
width: 100%; | |
} | |
div.global-container { | |
background-image: url('http://saltstack.github.io/salt-jenkins/img/saltstack-logo-color.png'); | |
background-repeat: no-repeat; | |
background-position: right bottom; | |
min-height: 450px; | |
} | |
td.narrow { width: 1%; text-aligh: right; white-space: nowrap; } | |
TD.bg1 { background-color: #f0f0f0; font-size:120% } | |
TD.bg2 { background-color: #F7f9f8; font-size:110% } | |
TD.bg3 { background-color: #fdfdfd; } | |
TD.test_passed { color: green; } | |
TD.test_failed { color: red; } | |
TD.console { font-family: Courier New; } | |
</STYLE> | |
<BODY> | |
<j:set var="spc" value="&nbsp;&nbsp;" /> | |
<div class="global-container"> | |
<!-- GENERAL INFO --> | |
<TABLE class="top-table"> | |
<TR><TD align="right narrow"> | |
<j:choose> | |
<j:when test="${build.result=='SUCCESS'}"> | |
<IMG SRC="${rooturl}static/e59dfe28/images/32x32/blue.gif" /> | |
</j:when> | |
<j:when test="${build.result=='FAILURE'}"> | |
<IMG SRC="${rooturl}static/e59dfe28/images/32x32/red.gif" /> | |
</j:when> | |
<j:otherwise> | |
<IMG SRC="${rooturl}static/e59dfe28/images/32x32/yellow.gif" /> | |
</j:otherwise> | |
</j:choose> | |
</TD><TD valign="center"><B style="font-size: 200%;">BUILD ${build.result}</B></TD></TR> | |
<TR><TD class="narrow">Build URL</TD><TD><A href="${rooturl}${build.url}">${rooturl}${build.url}</A></TD></TR> | |
<TR><TD class="narrow">Project:</TD><TD>${project.name}</TD></TR> | |
<TR><TD class="narrow">Date of build:</TD><TD>${it.timestampString}</TD></TR> | |
<TR><TD class="narrow">Build duration:</TD><TD>${build.durationString}</TD></TR> | |
</TABLE> | |
<BR/> | |
<!-- HEALTH TEMPLATE --> | |
<j:set var="healthIconSize" value="16x16" /> | |
<j:set var="healthReports" value="${project.buildHealthReports}" /> | |
<j:if test="${healthReports!=null}"> | |
<table width="100%"> | |
<tr><td class="bg1" colspan="3"><b>Healh Report</b></td></tr> | |
<tr> | |
<td class="bg2" width="1%">W</td> | |
<td class="bg2">Description</td> | |
<td class="bg2" width="1%">Score</td> | |
</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> | |
<!-- CHANGE SET --> | |
<j:set var="changeSet" value="${build.changeSet}" /> | |
<j:if test="${changeSet!=null}"> | |
<j:set var="hadChanges" value="false" /> | |
<TABLE width="100%"> | |
<TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR> | |
<j:forEach var="cs" items="${changeSet}" varStatus="loop"> | |
<j:set var="hadChanges" value="true" /> | |
<j:set var="aUser" value="${cs.hudsonUser}"/> | |
<TR> | |
<TD colspan="2" class="bg2"> | |
${spc}Revision <tt>${cs.commitId?:cs.revision?:cs.changeNumber}</tt> by | |
<B>${aUser!=null?aUser.displayName:cs.author.displayName}: </B> | |
<B>${aUser!=null?aUser.email:cs.author.email}: </B> | |
${cs.msgAnnotated} | |
</TD> | |
</TR> | |
<j:forEach var="p" items="${cs.affectedFiles}"> | |
<TR> | |
<TD width="10%">${spc}${p.editType.name}</TD> | |
<TD>${p.path}</TD> | |
</TR> | |
</j:forEach> | |
</j:forEach> | |
<j:if test="${!hadChanges}"> | |
<TR><TD colspan="2">No Changes</TD></TR> | |
</j:if> | |
</TABLE> | |
<BR/> | |
</j:if> | |
<!-- ARTIFACTS --> | |
<j:set var="artifacts" value="${build.artifacts}" /> | |
<j:if test="${artifacts!=null and artifacts.size()>0}"> | |
<TABLE width="100%"> | |
<TR><TD class="bg1"><B>BUILD ARTIFACTS</B></TD></TR> | |
<TR> | |
<TD> | |
<j:forEach var="f" items="${artifacts}"> | |
<li> | |
<a href="${rooturl}${build.url}artifact/${f}">${f}</a> | |
</li> | |
</j:forEach> | |
</TD> | |
</TR> | |
</TABLE> | |
<BR/> | |
</j:if> | |
<!-- MAVEN ARTIFACTS --> | |
<j:set var="mbuilds" value="${build.moduleBuilds}" /> | |
<j:if test="${mbuilds!=null}"> | |
<TABLE width="100%"> | |
<TR><TD class="bg1"><B>BUILD ARTIFACTS</B></TD></TR> | |
<j:forEach var="m" items="${mbuilds}"> | |
<TR><TD class="bg2"><B>${m.key.displayName}</B></TD></TR> | |
<j:forEach var="mvnbld" items="${m.value}"> | |
<j:set var="artifacts" value="${mvnbld.artifacts}" /> | |
<j:if test="${artifacts!=null and artifacts.size()>0}"> | |
<TR> | |
<TD> | |
<j:forEach var="f" items="${artifacts}"> | |
<li> | |
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a> | |
</li> | |
</j:forEach> | |
</TD> | |
</TR> | |
</j:if> | |
</j:forEach> | |
</j:forEach> | |
</TABLE> | |
<BR/> | |
</j:if> | |
<!-- Static Analysis --> | |
<j:set var="actions" value="${it.staticAnalysisActions}" /> | |
<j:if test="${!actions.isEmpty()}"> | |
<div class="content"> | |
<h1>Static Analysis Results</h1> | |
<table> | |
<tr> | |
<th></th> | |
<th>Name</th> | |
<th>Result</th> | |
<th>Total</th> | |
<th>High</th> | |
<th>Normal</th> | |
<th>Low</th> | |
</tr> | |
<j:forEach var="action" items="${actions}"> | |
<tr> | |
<td> | |
<img src="${rooturl}${action.smallImageName}" /> | |
</td> | |
<td> | |
<a href="${rooturl}${build.url}/${action.urlName}">${action.displayName}</a> | |
</td> | |
<td class="center"> | |
<j:choose> | |
<j:when test="${action.result.pluginResult=='SUCCESS'}"> | |
<img src="${rooturl}static/e59dfe28/images/16x16/blue.gif" /> | |
</j:when> | |
<j:when test="${action.result.pluginResult=='FAILURE'}"> | |
<img src="${rooturl}static/e59dfe28/images/16x16/red.gif" /> | |
</j:when> | |
<j:otherwise> | |
<img src="${rooturl}static/e59dfe28/images/16x16/yellow.gif" /> | |
</j:otherwise> | |
</j:choose> | |
</td> | |
<td class="center">${action.result.numberOfAnnotations} </td> | |
<td class="center">${action.result.getNumberOfAnnotations('HIGH')} </td> | |
<td class="center">${action.result.getNumberOfAnnotations('NORMAL')} </td> | |
<td class="center">${action.result.getNumberOfAnnotations('LOW')} </td> | |
</tr> | |
</j:forEach> | |
</table> | |
</div> | |
</j:if> | |
<!-- JUnit TEMPLATE --> | |
<j:set var="junitResultList" value="${it.JUnitTestResult}" /> | |
<j:if test="${junitResultList.isEmpty()!=true}"> | |
<TABLE width="100%"> | |
<TR><TD class="bg1" colspan="2"><B>JUnit Tests</B></TD></TR> | |
<j:forEach var="junitResult" items="${it.JUnitTestResult}"> | |
<j:forEach var="packageResult" items="${junitResult.getChildren()}"> | |
<j:forEach var="failed_test" items="${packageResult.getFailedTests()}"> | |
<TR bgcolor="white"><TD class="test_failed" colspan="2"><B><li>Failed: ${failed_test.getFullName()} </li></B></TD></TR> | |
</j:forEach> | |
</j:forEach> | |
</j:forEach> | |
</TABLE> | |
<BR/> | |
</j:if> | |
<!-- COBERTURA TEMPLATE --> | |
<j:set var="coberturaAction" value="${it.coberturaAction}" /> | |
<j:if test="${coberturaAction!=null}"> | |
<j:set var="coberturaResult" value="${coberturaAction.result}" /> | |
<j:if test="${coberturaResult!=null}"> | |
<table width="100%"><TD class="bg1" colspan="2"><B>Cobertura Report</B></TD></table> | |
<table width="100%"><TD class="bg2" colspan="2"><B>Project Coverage Summary</B></TD></table> | |
<table border="1px" class="pane"> | |
<tr> | |
<td>Name</td> | |
<j:forEach var="metric" items="${coberturaResult.metrics}"> | |
<td>${metric.name}</td> | |
</j:forEach> | |
</tr> | |
<tr> | |
<td>${coberturaResult.name}</td> | |
<j:forEach var="metric" items="${coberturaResult.metrics}"> | |
<td data="${coberturaResult.getCoverage(metric).percentageFloat}">${coberturaResult.getCoverage(metric).percentage}% | |
(${coberturaResult.getCoverage(metric)}) | |
</td> | |
</j:forEach> | |
</tr> | |
</table> | |
<j:if test="${coberturaResult.sourceCodeLevel}"> | |
<h2>Source</h2> | |
<j:choose> | |
<j:when test="${coberturaResult.sourceFileAvailable}"> | |
<div style="overflow-x:scroll;"> | |
<table class="source"> | |
<thead> | |
<tr> | |
<th colspan="3">${coberturaResult.relativeSourcePath}</th> | |
</tr> | |
</thead> | |
${coberturaResult.sourceFileContent} | |
</table> | |
</div> | |
</j:when> | |
<j:otherwise> | |
<p> | |
<i>Source code is unavailable</i> | |
</p> | |
</j:otherwise> | |
</j:choose> | |
</j:if> | |
<j:forEach var="element" items="${coberturaResult.childElements}"> | |
<j:set var="childMetrics" value="${coberturaResult.getChildMetrics(element)}"/> | |
<table width="100%"><TD class="bg2" colspan="2">Coverage Breakdown by ${element.displayName}</TD></table> | |
<table border="1px" class="pane sortable"> | |
<tr> | |
<td>Name</td> | |
<j:forEach var="metric" items="${childMetrics}"> | |
<td>${metric.name}</td> | |
</j:forEach> | |
</tr> | |
<j:forEach var="c" items="${coberturaResult.children}"> | |
<j:set var="child" value="${coberturaResult.getChild(c)}"/> | |
<tr> | |
<td> | |
${child.xmlTransform(child.name)} | |
</td> | |
<j:forEach var="metric" items="${childMetrics}"> | |
<j:set var="childResult" value="${child.getCoverage(metric)}"/> | |
<j:choose> | |
<j:when test="${childResult!=null}"> | |
<td data="${childResult.percentageFloat}">${childResult.percentage}% | |
(${childResult}) | |
</td> | |
</j:when> | |
<j:otherwise> | |
<td data="101">N/A</td> | |
</j:otherwise> | |
</j:choose> | |
</j:forEach> | |
</tr> | |
</j:forEach> | |
</table> | |
</j:forEach> | |
</j:if> | |
<BR/> | |
</j:if> | |
<!-- CONSOLE OUTPUT --> | |
<j:getStatic var="resultFailure" field="FAILURE" className="hudson.model.Result"/> | |
<j:if test="${build.result==resultFailure}"> | |
<TABLE width="100%" cellpadding="0" cellspacing="0"> | |
<TR><TD class="bg1"><B>CONSOLE OUTPUT</B></TD></TR> | |
<j:forEach var="line" items="${build.getLog(100)}"><TR><TD class="console">${line}</TD></TR></j:forEach> | |
</TABLE> | |
<BR/> | |
</j:if> | |
</div> | |
</BODY> | |
</j:jelly> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment