我有一个构建配置,其中包含一个连接到git分支的测试VCS根目录dev,3个构建步骤和1个触发器.这些是我的构建步骤:
我想为分支运行所有这些构建步骤,dev但只有两个(构建和运行测试)用于分支匹配feature/*.我希望在我的构建配置下显示它.因此,构建配置具有dev运行测试和部署的默认分支,但feature/*附加分支仅运行测试.
我怎样才能做到这一点?
如果我添加/refs/heads/(feature/*)到分支规范(默认分支下面),这可以很好地工作,但它总是部署 - 我不想要.

编辑1:似乎有一个可用的变量可用%teamcity.build.branch%.但是如何在部署步骤中执行条件检查以检查分支是否为dev分支.我不确定.
编辑2:还有一个变量名称%vcsroot.branch%,它是VCS根目录中默认分支的名称.所以我们仍然需要一个检查%teamcity.build.branch%变量是否等于的条件%vcsroot.branch%,然后运行部署步骤.
Sam*_*der 10
实现您想要的方法是将您的构建分成2个构建并在它们之间具有依赖关系.然后你可以在构建之间有单独的触发器.
因此,拆分构建,以便构建包含的A
并构建包含的B
为构建B提供构建B的快照依赖性.
然后在检测到VCS签入时添加触发器以构建A. 这将确保构建和测试在任何功能分支上运行.
还可以在检测到VCS签入时在构建B上添加触发器,但编辑规则以排除功能分支.当检测到任何其他分支的签入时,构建B将启动,但是它需要构建A才能首先完成,因此它将首先排队,并且如果构建A失败则不会启动(假设您在选项中设置了)
更新
如果这太麻烦了,那么你可能会玩一个小技巧,但在Run测试和Build and Deploy之间创建一个构建步骤,它调用命令行或PowerShell脚本.调用脚本传递%teamcity.build.branch%,然后脚本可以检查,如果它被称为与dev和Exit 0如果是的话,并Exit -1如果不是,然后这一步应该构建失败,并阻止部署.这意味着构建似乎失败但会阻止您希望避免运行的步骤.如果此步骤失败,可能会让teamcity不报告构建失败,我不确定
另一个选择是你编写一个脚本来进行构建和手动部署,然后调用这个脚本传入%teamcity.build.branch%并提前退出,如果不是dev,只继续进行实际构建并进行部署dev.这不会导致构建失败,但意味着你必须编写脚本来完成TeamCity现在为你做的事情.
| 归档时间: |
|
| 查看次数: |
4656 次 |
| 最近记录: |