Un collega mi ha detto che ogni build in Jenkins ha "azioni" associate e che i plugin Jenkins fanno la loro magia tramite le azioni. Sono stato in grado di trovare tutte le azioni delle mie azioni con build.getActions()
. Ho quindi eseguito il loop delle azioni finché non ho ottenuto LogParserAction
, ovvero l'azione fornita dal plug-in Log Parser di Jenkins.
Ho quindi controllato il codice sorgente di LogParserAction.class
per trovare il metodo getErrorLinksFile()
. Con questo metodo sono riuscito a ottenere il testo del log analizzato. Un metodo simile chiamato getWarningLinksFile()
è disponibile per gli avvisi e un altro è disponibile per informazioni.
Ho quindi inserito il testo sul carattere \n
e applicato alcune espressioni regolari per farlo sembrare come volevo. Le parti importanti del codice sono sotto. Sembra meglio se lo si visualizza come HTML in Notepad ++
%>
<TABLE width="100%">
<TR>
<TD class="bg1" colspan="2">ERRORS</TD>
</TR>
<%
def publisher = null
for(iter in project.getPublishersList()){
if(iter.getDescriptor().getDisplayName().equals("Editable Email Notification")){
publisher = iter
break
}
}
if(publisher != null){
def logParserResult
//Get the LogParserAction from Jenkins
for(action in build.getActions()){
if(action.toString().contains("LogParserAction")){
//Get the LogParserResult from the LogParserAction
logParserResult = action.getResult()
break
}
}
//Get the ErrorLinksFile from the LogParserResult
def errorLinksFile = new File(logParserResult.getErrorLinksFile())
//Rewrite the URL so it directs to something useful
pattern = ~/<a.*?><font.*?>/
def errorList = []
for(line in errorLinksFile.getText().split("\n")){
//All errors have a link, so this makes sure no superfluous text is displayed
if(!line.contains("href")){
continue
}
errorList.add(line.replaceAll(pattern, "<a href="+ rooturl + build.url + "parsed_console/?\">").minus("</font>"))
}
%>
<TR>
<TD class="bg2" colspan="2">Total : ${errorList.count{it}} error(s)</TD>
</TR>
<%
for(error in errorList){
%>
<TR>
<TD class="errors" colspan="2">${error}</TD>
</TR>
<%
}
%>
</TABLE>
E 'anche possibile integrare i registri con Email-Ext? Non è possibile trovare questo alla documentazione? Forse in qualche modo tramite lo scripting? – Strinder
Hai trovato la soluzione: aggiungi
all'area di contenuto – Strinder