git - 除了默认的所有分支的 Teamcity 分支规范
问题描述
我们有一个专用的 vcs 根,我们用它来检查检查分支的步骤(这是我们为 master 中的代码所做的事情的一个子集)
我试图过滤 bitbucket 拉取请求分支和主分支,使其仅在“真实”分支上触发,但它仍然继续构建主提交,这是一种资源浪费。
我试过这个规格:
-:<default>
-:refs/pull-requests/*
+:*
根据我对规范语法的理解,这应该可行,但 teamcity 不同意。
解决方案
有 3 个地方可以定义分支。前 2 个(默认分支和分支规范)在您的 VCS 根目录中,使用 Git 规范格式 ( refs/heads/master
),并定义要监视更改的 refs [1]。
VCS 根
Team City 需要一个用于比较更改的默认分支。这通常是master
除非您有非标准配置。在分支规范中,您需要定义任何额外的 ref 来监控更改。对分支规范中定义的 refs 的任何更改都会连接到 TeamCity 进行处理。
适用于您的场景的 VCS Root 设置:
- 默认分支:
/refs/heads/master
- 分行规范:
+:*
版本控制设置
魔法真正发生在版本控制设置中。在这些设置中,只有定义的分支可用于构建。本节使用逻辑名称来定义要包含的分支。您可能需要单击“显示高级设置”以查看分支过滤器 [2]。
您可以使用 Branch Filter 右侧的向导测试一切是否正常工作。单击小魔杖图标,您应该会看到 VCS Root 正在监视的所有分支。它应该包括当前在您的 git 存储库中的任何其他分支。如果这对您来说更容易,您可以使用向导来构建您的过滤器。
对于您的方案,您应该监控所有内容 ( +:*
),排除 master 分支 ( -:<default>
) 以及您希望忽略的任何其他分支 ( -:pull-requests/*
)。它应该看起来像:
+:*
-:<default>
-:pull-requests/*
这意味着 master 或任何以 pull-request 开头的分支中发生的任何更改都将被忽略。
您可以使用 Build Triggers 并指定哪些特定分支触发构建,从而更精细地控制基于此处的分支发生的情况。[3]
注意:有一些关于分支过滤和规范的规则可能很有趣。 [4]
参考:
2:https ://www.jetbrains.com/help/teamcity/2019.2/branch-filter.html
3:https ://www.jetbrains.com/help/teamcity/2019.2/configuring-build-triggers.html
推荐阅读
- quill - Quill:如何获取包含样式的 html 数据?
- python - 当您在 if 逻辑语句中调用修改函数时,是否会编辑 2D 列表?
- javascript - 如何使用 Javascript 本地存储从 HTML 文本框中存储值?
- fish - 鱼壳是否支持字母范围扩展?
- android - 以编程方式停止/开始为根植于 Android LG K4 的充电
- matlab - 为什么 matlab textscan 函数不能将 + 22.24 读取为浮点数?
- ios - 随机 UICollectionView 网格
- c++ - gdb中的C ++ lambda“__closure”地址
- javascript - 如何限制 webpack 的范围
- c# - 如何用空字符串分隔符分割字符串