从批处理文件到jenkins管道检索变量的输出/状态

时间:2019-02-06 11:59:23

标签: batch-file jenkins-pipeline

我正在尝试通过将env变量初始设置为true来检索bat中可用于jenkins管道的变量的输出/状态。

我的期望是,根据在bat内分配的变量的值(即status=false),由于在该阶段给出了表达式,因此无法执行下一阶段:

pipeline {
    agent any
    environment{
        STATUS='TRUE'
    }
    stages {
        stage('test1') {

            steps {
                bat '''set status=FALSE 
echo %status%'''   
                echo "$status" 
            }

        }
       stage('test2') {
            when{
               environment name: 'STATUS', value: 'TRUE' 
                }
            steps {
                input message: 'Push', ok: 'GO!!'
            }
        }
    }
}

我当前得到的输出是 o/p: false ,用于执行蝙蝠,下一步将输出显示为true。

2 个答案:

答案 0 :(得分:1)

echo "$status"在管道中,其中环境STATUS的更改在节点上进行。 AFAIK,这不会在管道本身中反映出来。

您可以做的是使用returnStdout: true并在管道中保持此变量状态

def script = '''set status=FALSE 
    echo %status%'''   

def status = bat(script: script, returnStdout: true)
echo "$status" 

答案 1 :(得分:0)

在上面的hakamairi回答之后,应将@echo off添加到脚本字符串的开头,否则returnStdout: true也将返回命令提示符。

此外,如果在其他地方使用已分配的.trim()变量的值(在结尾处换行),则在bat脚本末尾(在其右括号之后)添加status可能很有用。不受欢迎的。