【问题标题】:Jenkins Pipeline - Reading previous stage logJenkins Pipeline - 阅读前一阶段日志
【发布时间】:2016-07-06 08:00:29
【问题描述】:

考虑一个具有两个阶段的 Jenkins 流水线,Stage A 然后 Stage B

在Stage B中,是否可以针对某些特定文本解析Stage A的日志?

【问题讨论】:

  • 我看你需要什么样的日志。例如。如果你想解析 gradle 输出,你可以将标准输出重定向到文件和下一个读取文件并解析它。

标签: jenkins jenkins-pipeline


【解决方案1】:

自 7 月 28 日以来有更新!

正如this answer 中提到的,从 Pipeline: Nodes and Processes 的 2.4 版开始,您可以使用:

def out = sh script: 'command', returnStdout: true

至少它比输出到文件然后再读取文件要简单和干净。

【讨论】:

  • 嗨,也许你可以帮我解析前一个“步骤”,因为我使用了需要一个“步骤”的 copyArtifact 插件(所以在我的情况下它不是命令,所以我不能使用“sh script”),我为它创建了一个问题:stackoverflow.com/questions/46601108/…
【解决方案2】:

使用tee 将输出拆分为标准输出和文件。接下来为您的文本解析文件。

STAGE_A_LOG_FILE = 'stage_a.log'

pipeline {
    agent any
    stages {
        stage('Stage A') {
            steps {
                script {
                    // tee log into file
                    tee(STAGE_A_LOG_FILE) {
                        echo 'print some Stage_A log content ...'
                    }
                }
            }
        }
        stage('Stage B') {
            steps {
                script {
                    // search log file for 'Stage_A'
                    regex = java.util.regex.Pattern.compile('some (Stage_A) log')
                    matcher = regex.matcher(readFile(STAGE_A_LOG_FILE))
                    if (matcher.find()) {
                        echo "found: ${matcher.group(1)}"
                    }
                }
            }
        }
    }
}

管道输出:

print some Stage_A log content ...
found: Stage_A
Finished: SUCCESS

【讨论】:

【解决方案3】:

按照建议,我最终做的是使用 tee 写入文件(和标准输出)。

sh "command | tee <filename>"

然后根据需要解析文件,使用readFile &lt;filename&gt;从工作区读取文件。

【讨论】:

  • 但要小心。如果您依赖返回码 - 此行将开始始终返回 0。
【解决方案4】:

如果要搜索模式的第一次出现,也可以使用manager.logContains(regexp)manager.getLogMatcher(regexp)。更多详情请参阅我的其他答案:https://stackoverflow.com/a/39873765/4527766

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多