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

时间:2012-08-30 11:11:06

标签: continuous-integration teamcity git-branch teamcity-7.1

我有一个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”不再符合默认值 - 但这似乎也不起作用。

4 个答案:

答案 0 :(得分:4)

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

就我而言,我有

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

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

%BuildFormatSemVer%.{0}

返回

#1.0.0-develop.4

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

创建管道时,我们已多次遇到此问题。当尝试使用Gitflow工作流自动构建功能和发布分支时,它是最明显的。我们能够做的是在teamcity.build.vcs.branch.github_myproject中使用sed和正则表达式,以便在我们希望使用它时清理字符串。这主要是为了调试目的而对水印工件进行处理。

对于我们来说,更大的问题是TeamCity 7.1.1版本不会自动为任何非VCS根目录中的默认构建的依赖构建启动。显然这是一个巨大的痛点,因为我们现在必须在工具中手动点击。我们还没有找到一种干净的方法来解决这个问题,而不是使用HTTP API来调用正确构建步骤的git中的钩子。

答案 3 :(得分:1)

我不知道这是否已经回答过,或者是否有任何相关性。

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