You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins DSL技术咨询:如何获取阶段日志并提取失败错误日志

Jenkins DSL 获取失败阶段的错误日志

你可以通过Jenkins内部API实现仅提取失败阶段的日志,无需输出全部控制台内容,具体实现如下:

核心思路

借助Jenkins的StageResultAction获取所有阶段的执行信息,筛选出结果为失败的阶段,再通过日志行号范围提取对应阶段的日志内容。

代码示例

// 获取阶段结果对应的Action(依赖Stage View Plugin)
def stageResultActions = currentBuild.getRawBuild().getActions(
    hudson.plugins.pipeline.stagegraphview.StageResultAction.class
)

if (stageResultActions) {
    // 遍历所有阶段节点
    stageResultActions[0].getStageNodes().each { stageNode ->
        // 判断阶段是否失败
        if (stageNode.getResult() == hudson.model.Result.FAILURE) {
            println "=== 失败阶段:${stageNode.getName()} ==="
            // 获取该阶段日志的起止行号
            def startLine = stageNode.getLogStart()
            def endLine = stageNode.getLogEnd()
            
            if (startLine != null && endLine != null) {
                // 提取并打印该阶段的日志
                def failureLogs = currentBuild.getRawBuild().getLog(startLine, endLine)
                failureLogs.each { line ->
                    println line
                }
            }
        }
    }
}

注意事项

  • 确保Jenkins已安装Stage View Plugin,否则无法获取StageResultAction实例。
  • 使用getRawBuild()需要脚本拥有足够权限,需在Jenkins全局安全配置中开启「允许脚本访问Jenkins内部API」。
  • 若阶段日志起止行号不准确,可尝试直接解析控制台日志,通过匹配阶段的开始(如Started stage 'XXX')和结束标记(如Finished stage 'XXX')提取对应片段,但这种方式稳定性不如API。

内容的提问来源于stack exchange,提问作者Oded

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:23:29