我正在尝试通过将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。
答案 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
可能很有用。不受欢迎的。