Một đồng nghiệp nói với tôi rằng mọi công trình xây dựng trong Jenkins đều có "hành động" liên kết với nó và các plugin Jenkins thực hiện phép thuật của họ thông qua các hành động. Tôi đã có thể tìm thấy tất cả các hành động của hành động của tôi với build.getActions()
. Sau đó tôi lặp lại các hành động cho đến khi tôi nhận được LogParserAction
là hành động được cung cấp bởi trình cắm Jenkins Log Parser.
Sau đó, tôi đã xem qua mã nguồn của LogParserAction.class
để tìm phương thức getErrorLinksFile()
. Với phương pháp này, tôi đã có thể nhận được văn bản của nhật ký được phân tích cú pháp. Phương pháp tương tự có tên là getWarningLinksFile()
khả dụng cho các cảnh báo và phương pháp khác có sẵn để biết thông tin.
Tôi sau đó lặp qua văn bản trên \n
ký tự và áp dụng một số regex để làm cho nó trông như thế nào tôi muốn. Các phần quan trọng của mã bên dưới. Có vẻ tốt hơn nếu bạn xem nó dưới dạng HTML trong 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>
Có phải Email-Ext cũng có thể nội tuyến nhật ký không? Không thể tìm thấy tài liệu này ở tài liệu? Có lẽ bằng cách nào đó thông qua kịch bản? – Strinder
Tìm giải pháp: Chỉ cần thêm
vào khu vực nội dung – Strinder