如何将Branch Name传递给TeamCity中的MSBuild脚本?

时间:2012-10-11 11:20:22

标签: msbuild teamcity teamcity-7.0

我让TeamCity在多个Mercurial分支机构之间构建配置。作为构建过程的一部分,我想根据从中构建的分支命名一些输出。

我尝试使用$(TEAMCITY_BUILD_BRANCH)尝试从TeamCity获取teamcity.build.branch属性,但我只获得一个空字符串。我成功使用$(BUILD_NUMBER)build.number属性放入脚本中,因此我对所需内容感到困惑。

2 个答案:

答案 0 :(得分:5)

只需创建一个构建参数:

system.branch_name = %teamcity.build.vcs.branch.Your_Project%

项目名称中的任何非字母数字字符都应替换为“_”。 在你的msbuild中使用$(branch_name)来引用参数。

像魅力一样工作: - )

答案 1 :(得分:2)

$(vcsroot_url),如果您只有一个vcs root连接到构建配置。

如果这不是您想要的 - 请尝试使用此处所述的所有已知属性: http://confluence.jetbrains.net/display/TCD7/Predefined+Build+Parameters

仅供参考的服务器属性:

  

您可以通过添加来获取全套仅供参考的服务器属性   system.teamcity.debug.dump.parameters属性到构建   配置和检查“可用的仅供参考的服务器   属性“构建日志中的部分。

UPD:您也可以查看"what's new" link

  

VCS分支参数对于Git和Mercurial,TeamCity提供   附加的构建参数,其中包含VCS分支的名称   建设开始的时刻。如果一个版本从该版本进行了修订   refs / heads / bugfix分支,TeamCity将添加一个配置参数   使用以下名称:teamcity.build.vcs.branch。<简化的VCS   根名称> = refs / heads / bugfix

     

VCS根目录的名称在哪里   非字母数字字符替换为_。

根据这个 - 您应该能够像以下msbuild变量一样访问分支 $(teamcity_build_vcs_branch _)。

希望这次我能正确理解你的问题。

PS:很抱歉最初的误导 - 我不知道TeamCity中DVCS和CVCS之间的细微差别。无论如何 - 我的初步答案也可以帮助你 - 你可以获得所有变量,然后找到你想要的正确数据的确切var名称