17

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

对于命名分支(feature1,feature2),这很好用。

问题是,当我向主人提交时,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

4 回答 4

4

在 teamcity 7 中,返回开发的只是 %vcsroot.branch%。

就我而言,我有

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

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

%BuildFormatSemVer%.{0}

哪个返回

#1.0.0-develop.4
于 2013-08-13T13:55:55.123 回答
3

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

希望他们真的解决了这个问题,因为这绝对是一个 hack。

于 2012-09-09T08:36:39.243 回答
2

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

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

于 2013-04-10T14:18:08.757 回答
1

我不知道这是否以前被回答过,或者不再相关。

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

于 2016-10-12T00:56:02.047 回答