解析jenkins工作以获取最后几行并将其作为jenkins环境变量传递

时间:2017-08-09 17:59:55

标签: jenkins groovy

尝试将jenkins日志发布到休息终点。以下变量未得到解决 $ {BUILD_LOG,maxLines = 50,escapeHtml = false}

是否有任何直接的方法从作业构建中获取最后50行并将其设置为jenkins环境变量

1 个答案:

答案 0 :(得分:0)

使用groovy插件,我能够将日志设置为jenkins构建参数。 虽然这给了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);
}