如何将Script段内定义的变量传递给Bitbucket Pipeline的Pipe
Bitbucket Pipelines 脚本内定义变量传递给Pipe的解决方法
问题原因
YAML格式声明的Pipe,其variables下的参数值会在Pipeline任务初始化、YAML文件解析阶段就完成变量替换,此时script段的export命令尚未执行,因此自定义变量会被解析为空值。同时你给出的示例中export MY_MESSAGE = "Hello world"存在Shell语法错误,export语句的等号两侧不能有空格。
可行解决方法
使用Bitbucket官方内置的run-pipe命令行工具调用Pipe,该命令在script的Shell上下文内执行,会读取当前Shell已经导出的所有环境变量,可以正常获取自定义变量值。
修正后的配置示例如下:
script: - export MY_MESSAGE="Hello world" - run-pipe atlassian/slack-notify:0.2.1 \ --variable WEBHOOK_URL="$WEBHOOK_URL" \ --variable MESSAGE="$MY_MESSAGE"
注意事项
- 如果变量值包含空格、特殊符号,必须用双引号包裹参数值,避免被Shell拆分解析
- 所有YAML块声明的Pipe都可以通过
run-pipe命令调用,参数和YAML格式的variables配置完全对应
内容的提问来源于stack exchange,提问作者ivystopia
相关产品推荐
相关产品推荐

