我在bit-bucket帐户下有一个存储库,这个存储库有这4个分支:
- master
- API
- Admin
- Web
我在bitbucket-pipelines.yml
下只有一个master branch
,就像那样:
image: maven:3.5.0-jdk-7
pipelines:
branches:
API:
- step:
caches:
- maven
script:
- mvn install
所以我希望每当API分支发生任何推动都会触发这个管道时,实际上它并没有发生,除非对主分支进行了推送,唯一的出路就是把同一个文件也放到在API分支下,虽然文档说它只有一个副本位于repo root master branch
下,那么我怎样才能实现那个PLZ?
如果我需要在所有分支中放置相同的管道文件,我认为它完全是嘲笑,那么任何一个plz都可以澄清吗? 提前致谢!
答案 0 :(得分:1)
如果bitbucket-pipelines.yml
中只有master
,则推送到bitbucket-pipelines.yml
时没有API
,因此不会运行任何管道。就这么简单。您引用的文档中的“只有一个副本”语句对我来说没有多大意义,因为YAML文件只是在Git中,因此是分支依赖的,即bitbucket-pipelines.yml
是一个类似的文件任何其他文件,当谈到分支时,没有任何“特殊”。
但是,我明白为什么你感到困惑 - 为什么有一个单个配置文件指定每个分支的行为,而一个人可能只在每个分支?我假设这背后的基本原理是通常配置非常相似。例如,大多数repos都会包含develop
和master
等分支,这些分支可能只在部署的位置有所不同。在分支机构中使用不同的文件会更难以使用。
在您提出之前:是的,您可以配置2个以上的分支来执行相同的操作。至少有两种可能的语法,最简单的就是:
pipelines:
branches:
'{develop,master,release/*}':
- step:
script:
- echo $BITBUCKET_BRANCH
答案 1 :(得分:1)
<强>已更新强>
如果没有文档参考,很难确定,但是当时文档出错(可能现在已经更正),或者您误读了关于主分支的“只有一个副本”声明。
如果满足以下两个条件,Bitbucket将触发管道构建:
branches:
节点下的嵌套块与该分支名称匹配,或者在bitbucket-pipelines.yml文件中定义了default:
节点块。 default
节点块下定义的步骤将针对与branches:
节点块下定义的任何“分支”不匹配的所有分支执行。因此,为了显示使用分支的示例,下面的yaml文件将执行API分支的default
步骤(包括您创建并且未明确定义的任何后续分支),假设仍满足上述条件#1那个分支。
pipelines:
default:
- step:
script:
- echo $BITBUCKET_BRANCH
branches:
master:
- step:
script:
- echo $BITBUCKET_BRANCH
branches:
'{Admin,Web}':
- step:
script:
- echo $BITBUCKET_BRANCH
你会在official documentation中找到一个漂亮的小动画GIF,进一步说明它是如何工作的。