Разобрать задание jenkins, чтобы получить последние несколько строк и передать его как переменную окружения jenkins
Попытка опубликовать журнал Дженкинса в конечной точке покоя. Следующая переменная не разрешается ${BUILD_LOG, maxLines=50, escapeHtml=false}
Есть ли какой-нибудь прямой способ получить последние 50 строк из сборки проекта и установить его как переменную среды jenkins?
1 ответ
Используя плагин groovy, я смог установить логи для параметров сборки jenkins. Хотя это дает последние символы из журналов сборки Дженкинса. Это может быть улучшено в дальнейшем
import hudson.model.*
def build = Thread.currentThread().executable
def logFile=manager.build.logFile.text
def addOrReplaceParamValue = { String name,String value ->
def npl = new ArrayList<StringParameterValue>()
def pv = new hudson.model.StringParameterValue(name,value);
npl.add(pv);
def newPa = null
def oldPa = build.getAction(hudson.model.ParametersAction.class)
if (oldPa != null) {
build.actions.remove(oldPa)
newPa = oldPa.createUpdated(npl)
} else {
newPa = new hudson.model.ParametersAction(npl)
}
build.actions.add(newPa);
};
if (logFile) {
def buildMsg;
def buildStatus;
if(!logFile.contains("BUILD SUCCESS")){
buildMsg=logFile[-200..-1]
buildStatus="FAILED"
}else{
buildMsg="build successful..."
buildStatus="SUCCESSFUL"
}
addOrReplaceParamValue("message",buildMsg);
addOrReplaceParamValue("status", buildStatus);
}