我正在尝试通过将 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。
echo "$status"
在管道中,随着环境STATUS
更改在节点上完成。AFAIK 这不会反映在管道本身中。
您可以做的是使用returnStdout: true
并在管道中维护此变量状态
def script = '''set status=FALSE
echo %status%'''
def status = bat(script: script, returnStdout: true)
echo "$status"
按照上面的 hakamairi 回答,@echo off
应该添加到脚本字符串的开头,否则returnStdout: true
也会返回命令提示符。
此外,如果在其他地方使用分配的 status
变量的值,则在 bat 脚本的末尾(在其右括号之后(添加 .trim()
可能会很有用,其中末尾的换行是不可取的。