Bitbucket管道允许定义对拉取请求的检查,并具有全局过滤器,可以检查源分支。
pipelines:
pull-requests:
'**': #this runs as default for any branch not elsewhere defined
- step:
script
- ...
feature/*: #any branch with a feature prefix
- step:
script:
- ...
如何根据目标分支进行过滤?只有合并到母版后,才需要执行一些测试。
答案 0 :(得分:2)
不幸的是,拉取请求流水线机制是基于源分支而不是目标分支运行的。
对此进行了解释,原因是他们的跟踪者通过团队成员之一添加了pull-request
功能:
pull请求下的分支模式定义了源分支。这个 这样您就可以根据修复程序运行其他管道。对于 例如,对于功能分支,您可能有一组不同的测试 修补程序分支。请注意,这只是在谈论那些 在开发过程中违反公关。
this exact feature实际上还有另一个问题。
但是团队的答案是:
我绝对可以理解为什么这会很有用,尤其是在合并时 到主/主分支。
鉴于我们当前的优先事项,这不太可能 我们会在短期内提供支持。在此期间,我将打开 这张票是为了衡量其他用户看到相同票券的兴趣 东西。
也就是说,您可能以某种方式具有所需的行为:
pipelines:
pull-requests:
'**': #this runs as default for any branch not elsewhere defined
- step:
script
- if [ "${BITBUCKET_PR_DESTINATION_BRANCH}" != "master" ]; then printf 'not a target branch we want to check'; exit; fi
- printf 'running useful tests'
或者,如果您已经对所有pull请求进行了一些测试,如我所理解的那样:
pipelines:
pull-requests:
'**': #this runs as default for any branch not elsewhere defined
- step:
script
- printf 'these are the all PR tests'
- if [ "${BITBUCKET_PR_DESTINATION_BRANCH}" = "master" ]; then printf 'those are the extra checks on master'; fi
或者再说一次,它可以独立地外部化为脚本:
bitbucket-pipelines.yaml
pipelines:
pull-requests:
'**': #this runs as default for any branch not elsewhere defined
- step:
script
- ./bin/tests "${BITBUCKET_PR_DESTINATION_BRANCH}"
bin /测试
#!/usr/bin/env bash
printf 'these are the all PR tests'
if [ "${1}" = "master" ]
then
printf 'those are the extra checks on master'
fi
另请参见:管道文档页面中的变量:https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html