Continuous integration 使用Bitbucket';IF语句中的s$BITBUCKET_标记变量
我一整天都在挠头想弄明白这件事。有人能告诉我为什么吗Continuous integration 使用Bitbucket';IF语句中的s$BITBUCKET_标记变量,continuous-integration,bitbucket,continuous-deployment,bitbucket-pipelines,bitbucket-cloud,Continuous Integration,Bitbucket,Continuous Deployment,Bitbucket Pipelines,Bitbucket Cloud,我一整天都在挠头想弄明白这件事。有人能告诉我为什么吗 -如果[$BITBUCKET_BRANCH=='master'];呼应“做大师级的分支工作”;fi 如果我推到的分支是master,则在尝试运行某些代码时工作正常 但是当我试图用标签来区分它时 -if[$BITBUCKET_TAG=='test-*';然后回显“做测试标签”;fi 它被完全忽略,就好像从未到达if语句中的代码一样 我做错了什么?我试图以多种方式更改语句,尝试使用regex等,但都没有效果。任何帮助都将不胜感激 这是一个可复制的
-如果[$BITBUCKET_BRANCH=='master'];呼应“做大师级的分支工作”;fi
如果我推到的分支是master
,则在尝试运行某些代码时工作正常
但是当我试图用标签来区分它时
-if[$BITBUCKET_TAG=='test-*';然后回显“做测试标签”;fi
它被完全忽略,就好像从未到达if
语句中的代码一样
我做错了什么?我试图以多种方式更改语句,尝试使用regex等,但都没有效果。任何帮助都将不胜感激
这是一个可复制的样本管道代码:
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/unixif
语句,它将检查是否有一个文本字符串“test-*”
作为分支名称,您可能不使用它
您应该使用测试而不是'string equals'测试,如下所示:
if[[$BITBUCKET_TAG==*“test-”*];
还请注意,这里的yml
使用了'test-*'
标签:
“测试-*”:
。。。与bash/shell脚本解释
'test-*'
的方式不同是的,我确实找到了那篇文章,并在写了这个问题10分钟后找到了答案。答案就在我面前——毕竟这只是巴什,我本可以找巴什,而不是在亚特兰西群岛的文件里翻几个小时。。。是的,我觉得自己非常愚蠢。。。无论如何,非常感谢!