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