如何使用 Git 分支支持覆盖 TeamCity 7.1 中的 <default> 分支名称?

问题描述 投票:0回答:5

我有一个 CI 构建,它从 Github 提取功能分支,并使用基于项目、分支和构建号的文件夹命名约定将它们构建/打包到本地文件夹中。

对于命名分支(feature1、feature2),这非常有效。

问题是,当我向 master 提交时,TeamCity 将 teamcity.build.branch 公开为

<default>
- 这意味着当构建步骤扩展时

E:\Packages\MyProject\%teamcity.build.branch%\

它以

E:\Packages\MyProject\<default>
结束 - 然后导致构建步骤崩溃,因为它不是有效的 Windows 路径。

可以在完全限定的构建参数中看到主分支名称:

teamcity.build.branch                         <default>
teamcity.build.checkoutDir                    C:\TeamCity\BuildAgents\agent-mulder\work\2151838a7933464d
teamcity.build.default.checkoutDir            2151838a7933464d
teamcity.build.id                             16347
teamcity.build.vcs.branch.github_myproject    refs/heads/master

但理想情况下,我需要将 master 作为 teamcity.build.branch 以在我的构建步骤中使用。

我可以在运行时转换参数吗?覆盖行为?我什至尝试将 VCS 分支名称设置为 DO_NOT_USE,希望“master”不再与默认值匹配 - 但这似乎也不起作用。

continuous-integration teamcity git-branch teamcity-7.1
5个回答
4
投票

在 teamcity 7 中,它只是 %vcsroot.branch% 回报发展。

就我而言,我有

%MajorVersion%.%MinorVersion%.%PatchVersion%-%vcsroot.branch%

这些都是在构建参数中设置的。 数字格式是 %BuildFormatSemVer% ,即上面的内容 和 。 {0}

%BuildFormatSemVer%.{0}

哪个回报

#1.0.0-develop.4

3
投票

并不理想,但我可以通过在 git 中创建一个名为“teamcity”的新分支并将其设置为 TeamCity 中的默认分支来解决这个问题,它似乎要求该分支实际存在,因为它在我创建时有效分支,但当你输入假名时却没有。

希望他们能真正解决这个问题,因为这绝对是一个黑客行为。


2
投票

我们在创建管道时多次遇到这个问题。当尝试使用 Gitflow 工作流程自动构建功能和发布分支时,这是最明显的。我们所能做的就是使用

teamcity.build.vcs.branch.github_myproject
sed
中的正则表达式来在我们希望使用字符串时对其进行清理。这主要是为了调试目的对工件加水印。

至少对我们来说,更大的问题是 TeamCity 7.1.1 版本不会自动为 VCS 根中默认构建之外的任何内容触发依赖项构建。显然这是一个巨大的痛点,因为我们现在必须在工具中手动单击。除了 git 中的钩子(使用 HTTP API 调用正确的构建步骤)之外,我们还没有找到一种干净的方法来解决这个问题。


1
投票

我不知道这是否是以前的答案,或者不再相关。

在 TeamCity 10.0.2 中创建自定义参数,例如 %Git.Reference%。如果您需要从 TC 拉(或推)到 git,请将其设置为“ref/head/Dev”或“ref/Head/yourbranch”。在您的“VCS root”参考中使用它。


0
投票

要记住的一件事是,两者之间存在差异

  1. 您可以通过网络浏览器中的按钮自行触发构建
  2. 由受监控的 git 提交触发的构建。

根据我今天的经验,#2 导致在 %Teamcity.build.branch% 中提供完整的分支名称,而 #1 则给我

<default>

最终我们发现,如果构建使用的 VCS 定义有一个空白的“分支规范”,那么我会得到不想要的

<default>
分支名称。

因此将任何内容放入分支规范中即可修复它。在我们的例子中,我们使用了这个: 现在,甚至 #1 构建也获得了完整的分支名称。

© www.soinside.com 2019 - 2024. All rights reserved.