首页 > 解决方案 > 如何根据前一阶段的输出在 Jenkins 中运行条件以失败

问题描述

下面是我为提出我的问题而构建的一个基本结构。

stage('Run pre-checks') {
    steps {
        //Run pre-check scripts
    }
}
stage('Deploy config ') {
    when {
       expression {
        //Insert expression here
       }
    }
    steps {
        //Run a script
    }
}

基于下面的构造,我要做的是仅当“运行预检查”脚本的特定输出显示在该阶段的标准输出上时才运行特定脚本,这将是一个 python 脚本。如果预检查显示此输出,您将跳过第二步而不是运行它。有人知道能够做到这一点的环境变量和/或方法吗?

标签: jenkinsjenkins-pipeline

解决方案


sh 命令可以返回一个值而不是打印它。

MY_OUTPUT = sh (
    script: '... your command....',
    returnStdout: true
)

然后你可以用 MY_OUTPUT (trim(), substr...) 做任何你想做的事

文档的当前链接在这里(Sh shell 脚本):

returnStdout(可选)

如果选中,则任务的标准输出将作为步骤值作为字符串返回,而不是打印到构建日志中。(标准错误,如果有的话,仍然会打印到日志中。)您经常需要在结果上调用 .trim() 以去除尾随的换行符。

类型:布尔值


推荐阅读