gpt4 book ai didi

git - 在功能分支上运行测试

转载 作者:太空狗 更新时间:2023-10-29 12:51:18 26 4
gpt4 key购买 nike

我有一个构建配置,其中包含连接到 git branch dev 的测试 VCS 根目录、3 个构建步骤和 1 个触发器。这些是我的构建步骤:

  • 构建测试
  • 运行测试
  • 构建和部署

我想为分支 dev 运行所有这些构建步骤,但只有两个(构建和运行测试)用于匹配 feature/* 的分支。我希望它显示在我的构建配置下。因此构建配置有一个默认的 dev 分支运行测试和部署,但是 feature/* 额外的分支只运行测试。

我怎样才能做到这一点?

如果我将 /refs/heads/(feature/*) 添加到分支规范(在默认分支下),这会完美地工作,但它总是部署 - 我不想要。

enter image description here

编辑 1: 似乎有一个名为 %teamcity.build.branch% 的变量可供您使用。但是如何在部署步骤中做一个条件来检查分支是否是 dev 分支。我不确定。

编辑 2:还有一个变量名称 %vcsroot.branch%,它是 VCS 根中默认分支的名称。所以我们仍然需要一个条件来检查 %teamcity.build.branch% 变量是否等于 %vcsroot.branch%,然后运行部署步骤。

最佳答案

实现你想要的方法是将你的构建分成 2 个构建,并在它们之间建立依赖关系。然后你可以在构建之间有单独的触发器。

所以拆分构建所以你有构建 A 其中包含

  • 构建测试
  • 运行测试

并构建 B,其中包含

  • 构建和部署

为构建 B 提供对构建 A 的快照依赖。

然后在检测到 VCS checkin 时添加一个触发器来构建 A。这将确保构建和测试在任何功能分支上运行。

还可以在检测到 VCS checkin 时在构建 B 上添加触发器,但要编辑规则以排除您的功能分支。当检测到任何其他分支上的 checkin 时,构建 B 将启动,但它需要构建 A 先完成,因此它将首先排队,如果构建 A 失败则不会启动(假设您在选项中设置)

更新如果这太麻烦,那么您可以玩一个小技巧,但在运行测试和构建和部署之间创建一个构建步骤,它调用命令行或 powershell 脚本。调用传入 %teamcity.build.branch% 的脚本,然后脚本可以检查它是否使用 dev 调用,如果是,则使用 Exit 0Exit -1 如果没有,那么此步骤应该会使构建失败并阻止部署。这意味着构建看起来会失败,但会阻止您要避免运行的步骤。如果此步骤失败,可能会让 teamcity 不将构建报告为失败,我不确定

您的另一种选择是编写一个手动构建和部署的脚本,然后调用此脚本传递 %teamcity.build.branch% 并在不是 时提前退出dev 并且只有当它是 dev 时才继续进行实际的构建和部署。这不会导致构建失败,但意味着您必须编写脚本来完成 TeamCity 现在为您做的事情。

关于git - 在功能分支上运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28221464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com