【问题标题】:How can I capture the exit code of a job's "Execute shell" build step for use later in a pipeline?如何捕获作业的“执行 shell”构建步骤的退出代码,以便稍后在管道中使用?
【发布时间】:2018-07-01 07:33:47
【问题描述】:

我有一个管道脚本,它执行构建作为其步骤之一。假设它看起来像这样:

pipeline{
    stages {
        stage('Build'){
            steps{
                node('master'){
                    build job: 'my_build'
                }
            }
        }
        (other stages.........)
    }
}

有时,该步骤(“构建”)会失败。我在“构建”作业(“执行 shell”步骤)中有一个 shell 脚本,它以某个返回码退出,然后我退出该步骤,如下所示:

#!/bin/bash
./my_build_script.sh
exit $?

问题是,我不确定如何捕获那个退出代码以供稍后在管道中使用。

我想要实现的是仅在“执行 shell”步骤中的特定退出代码上重试构建

【问题讨论】:

    标签: bash jenkins groovy


    【解决方案1】:

    通过存储在变量中?

    ./my_build_script.sh
    get_status=$?
    

    现在你可以用变量做一些事情了:$get_status

    【讨论】:

    • 该变量在管道脚本级别是否可用?比如说,在管道的另一个阶段,我想说when { expression { $get_status == 200 } } 之类的话。
    • 是的,看这个链接pass-variables-between-stages
    • 在该示例中,变量设置在管道级别,而不是管道运行的作业中的“执行 shell”级别。
    • 另一种最简单的方法是将变量值保存在文件中:echo $get_status > status_file.txt 您可以在管道中的任何位置获取此文件。在其他阶段,您将能够:get_status=$(cat status_file.txt)
    • 当然,这行得通,但它不是一个非常优雅的解决方案(混乱的磁盘空间、I/O)。我会继续寻找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2010-12-31
    • 2012-08-29
    • 2011-12-11
    • 2014-01-28
    相关资源
    最近更新 更多