在 IF 语句中使用 Bitbucket 的 $BITBUCKET_TAG 变量
Using Bitbucket's $BITBUCKET_TAG variable in an IF statement
我整天都在绞尽脑汁想弄明白这个问题。有人能告诉我为什么吗
- if [ $BITBUCKET_BRANCH == 'master' ]; echo "Do master branch stuff"; fi
如果我推送到的分支是 master
., 在尝试 运行 一些代码时工作得很好
但是当我试图通过带有
的标签来区分它时
- if [ $BITBUCKET_TAG == 'test-*' ]; then echo "Do test tag stuff"; fi
它被完全忽略了,就好像if
语句里面的代码永远不会到达。
我做错了什么?我尝试以多种方式更改语句,尝试使用正则表达式等无济于事。任何帮助将不胜感激。
这是一个可重现的示例管道代码:
image: node:12.16.0
options:
docker: true
definitions:
steps:
- step: &if-test
name: If test
script:
- if [ $BITBUCKET_BRANCH == 'master' ]; then echo "Do master branch stuff"; fi
- if [ $BITBUCKET_TAG == 'test-*' ]; then echo "Do test tag stuff"; fi
- if [ $BITBUCKET_TAG == 'staging-*' ]; then echo "Do staging tag stuff"; fi
pipelines:
branches:
master:
- step: *if-test
tags:
'test-*':
- step: *if-test
'staging-*':
- step: *if-test
问题在于您对 "if"
语句进行编码的方式:
if [ $BITBUCKET_TAG == 'test-*' ];
这是一个 bash/unix if
语句,它将检查文字字符串 "test-*"
作为分支名称,您可能不会使用它。
您应该使用 'string contains' 测试而不是 'string equals' 测试,如下所示:
if [[ $BITBUCKET_TAG == *"test-"* ]];
另请注意,'test-*'
的 yml
用法...
tags:
'test-*':
... 与 bash/shell 脚本解释 'test-*'
.
的方式不同
我整天都在绞尽脑汁想弄明白这个问题。有人能告诉我为什么吗
- if [ $BITBUCKET_BRANCH == 'master' ]; echo "Do master branch stuff"; fi
master
.,在尝试 运行 一些代码时工作得很好
但是当我试图通过带有
的标签来区分它时- if [ $BITBUCKET_TAG == 'test-*' ]; then echo "Do test tag stuff"; fi
它被完全忽略了,就好像if
语句里面的代码永远不会到达。
我做错了什么?我尝试以多种方式更改语句,尝试使用正则表达式等无济于事。任何帮助将不胜感激。
这是一个可重现的示例管道代码:
image: node:12.16.0
options:
docker: true
definitions:
steps:
- step: &if-test
name: If test
script:
- if [ $BITBUCKET_BRANCH == 'master' ]; then echo "Do master branch stuff"; fi
- if [ $BITBUCKET_TAG == 'test-*' ]; then echo "Do test tag stuff"; fi
- if [ $BITBUCKET_TAG == 'staging-*' ]; then echo "Do staging tag stuff"; fi
pipelines:
branches:
master:
- step: *if-test
tags:
'test-*':
- step: *if-test
'staging-*':
- step: *if-test
问题在于您对 "if"
语句进行编码的方式:
if [ $BITBUCKET_TAG == 'test-*' ];
这是一个 bash/unix if
语句,它将检查文字字符串 "test-*"
作为分支名称,您可能不会使用它。
您应该使用 'string contains' 测试而不是 'string equals' 测试,如下所示:
if [[ $BITBUCKET_TAG == *"test-"* ]];
另请注意,'test-*'
的 yml
用法...
tags:
'test-*':
... 与 bash/shell 脚本解释 'test-*'
.