Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将分支名称传递给TeamCity中的MSBuild脚本?_Msbuild_Teamcity_Teamcity 7.0 - Fatal编程技术网

如何将分支名称传递给TeamCity中的MSBuild脚本?

如何将分支名称传递给TeamCity中的MSBuild脚本?,msbuild,teamcity,teamcity-7.0,Msbuild,Teamcity,Teamcity 7.0,我已经让TeamCity跨多个Mercurial分支构建了一个配置。作为构建过程的一部分,我想根据从中构建的分支命名一些输出 我尝试使用$(TEAMCITY\u BUILD\u BRANCH),试图从TEAMCITY获取TEAMCITY.BUILD.BRANCH属性,但我只得到一个空字符串。我成功地使用了$(BUILD\u NUMBER)将BUILD.NUMBER属性添加到脚本中,因此我对所需的内容有点困惑。$(vcsroot\u url)如果您只有一个vcs根连接到构建配置 如果这不是您想要的

我已经让TeamCity跨多个Mercurial分支构建了一个配置。作为构建过程的一部分,我想根据从中构建的分支命名一些输出

我尝试使用
$(TEAMCITY\u BUILD\u BRANCH)
,试图从TEAMCITY获取
TEAMCITY.BUILD.BRANCH
属性,但我只得到一个空字符串。我成功地使用了
$(BUILD\u NUMBER)
BUILD.NUMBER
属性添加到脚本中,因此我对所需的内容有点困惑。

$(vcsroot\u url)如果您只有一个vcs根连接到构建配置

如果这不是您想要的-请尝试获取所有已知属性,如下所述:

仅参考服务器属性:

您可以通过添加 将system.teamcity.debug.dump.parameters属性添加到生成 配置并检查“可用的仅供参考的服务器” 生成日志中的“属性”部分

UPD:你也可以检查一下

TeamCity提供的Git和Mercurial的VCS分支参数 具有已知VCS分支名称的其他生成参数 开始构建的时刻。如果生成从 refs/heads/bugfix分支,TeamCity将添加一个配置参数 使用以下名称:teamcity.build.vcs.branch.=refs/heads/bugfix

其中是VCS根目录的名称,所有 非字母数字字符将替换为389;

根据这一点-您应该能够按照以下msbuild变量访问分支 $(teamcity_build_vcs_branch_)

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


PS:很抱歉最初的误导-我不知道TeamCity中DVC和CVC之间有如此细微的区别。无论如何-我的初始答案也可以帮助您-您可以获取所有变量,然后使用所需的正确数据找到准确的变量名

只需创建一个构建参数:

system.branch_name = %teamcity.build.vcs.branch.Your_Project%
项目名称中的任何非字母数字字符应替换为“\u1”。 在msbuild中,使用
$(分支名称)
引用参数


类似于charm:-)

@Alexy我正在使用Mercurial,因此分支名称不是URL,而是存储库中的名称。我不太明白在MSBuild脚本中引用给定的生成参数需要什么。如果使用TeamCity进行生成-它将向MSBuild上下文发出它自己的一些环境变量,并且您可以像访问以前定义的属性一样访问它。这与TeamCity中的BUILD.NUMBER变为可用于msbuild脚本的$(BUILD\u NUMBER)的方式相同。Teamcity通常会发布许多有用的信息-您可以查看文档以了解详细信息。当你问起如何访问分支机构名称时,我想你可以从vcs url中提取它。不幸的是,我没有与Mercurual合作的Teamcity作为风投,这里只有svn。我找到了更多关于这一点的澄清,并将其附加到我的回答中。我尝试了
$(teamcity\u build\u vcs\u branch\u)
,包括大写和小写,带有或不带尾随下划线:这些都不起作用,而$(build\u NUMBER)仍然起作用。刚刚注意到-变量的最后一部分被消毒剂吃掉了$(teamcity_build_vcs_branch_your-vcsroot-name-此处)。此外,“您可以通过将system.teamcity.debug.dump.parameters属性添加到生成配置并检查生成日志中的“Available reference only server properties”部分来获取全套仅供参考的服务器属性。”尝试过-它获取\refs\head\whater,其中“whater”是实际的分支name@chester89您可以使用括号指定名称子匹配:例如
refs/head/(master)
refs/head/release/(*)
refs/head/(feature/*)
…以获取“master”、“1.2.3”和“feature/some name”在分支名称周围使用括号时,仅生成分支名称(不带“refs/head/”)出现在TeamCity UI中的%TeamCity.build.vcs.branch.Your_Project%参数仍然被解析为一个包含refs/heads的值。我使用的是TeamCity的8.0.6版本。@Alexander Marinov:如何将分支名称传递给需要作为构建步骤从TeamCity运行的脚本