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/unix
if
语句,它将检查是否有一个文本字符串
“test-*”
作为分支名称,您可能不使用它

您应该使用测试而不是'string equals'测试,如下所示:

if[[$BITBUCKET_TAG==*“test-”*];
还请注意,这里的
yml
使用了
'test-*'

标签:
“测试-*”:

。。。与bash/shell脚本解释
'test-*'

的方式不同是的,我确实找到了那篇文章,并在写了这个问题10分钟后找到了答案。答案就在我面前——毕竟这只是巴什,我本可以找巴什,而不是在亚特兰西群岛的文件里翻几个小时。。。是的,我觉得自己非常愚蠢。。。无论如何,非常感谢!