如何在Jenkins中将命令执行输出结果设置为环境变量
Jenkins将命令执行输出赋值给环境变量的实现方案
你需求的场景完全可以实现,不过你给出的示例代码存在语法错误,调整后即可正常使用。
错误点说明
- 缺
sh步骤的returnStdout: true参数:默认sh步骤仅会将命令输出打印到构建日志,不会返回值,必须显式指定该参数才会把命令执行的标准输出作为返回值 - 多余的右括号:你示例代码的末尾多写了1个闭合括号,会触发语法报错
- 命令内容未包裹引号:执行的az命令需要用引号包裹,才能作为sh步骤的合法入参
正确写法示例
environment { // 其他环境变量配置 registryAddress = sh( script: "az acr list --query \"[?contains(name, 'myname')].name\" --output tsv --resource-group myresourcegroup", returnStdout: true ).trim() }
注意事项
- 末尾加
.trim()是为了去除命令输出默认自带的末尾换行符,避免环境变量里混入多余空白字符 - 需要确保执行构建的Jenkins Agent上已经安装了az cli,并且已经完成对应Azure账号的鉴权,否则命令执行失败会导致环境变量赋值为空
- 该写法同时支持全局
environment块和Stage级别的environment块,可按需选择作用域
内容的提问来源于stack exchange,提问作者lo labs
相关产品推荐
相关产品推荐

