teamcity 中的 Git 短分支名称
Posted
技术标签:
【中文标题】teamcity 中的 Git 短分支名称【英文标题】:Git short branch name in teamcity 【发布时间】:2013-12-29 03:06:19 【问题描述】:我使用的是 teamcity 8.x.x 版本。我配置了我的 Teamcity 以进行持续部署。我需要一个功能分支部署。我看到这个文档“http://confluence.jetbrains.com/display/TCD8/Working+with+Feature+Branches”。
我正在尝试在我的 Teamcity 上实施此文档。我有问题。
我的部署配置使用“OctoPack”(nuget)。我的 nuget 包需要构建计数和分支名称。示例:1.0.0.356-feature-1。
我正在尝试这个版本,
%build.number%-%teamcity.build.vcs.branch.VCS_ROOT_ID% ----> 1.0.0.356-refs/head/feature-1
此版本不支持 nuget 版本控制。 nuget 不是比较“/”。
我需要这个,
%build.number%-%teamcity.build.vcs.SHORT_BRANCH_NAME.VCS_ROOT_ID% ---> 1.0.0.356-feature-1
我该怎么办?
谢谢
【问题讨论】:
您能分享一下您是如何解决这个问题的吗? 你好,试试这个,%build.number%-%teamcity.build.branch% @LarsStenberg,我知道这可能为时已晚,但是当我看到接受的答案时,我在想同样的问题。因此,如果将来有其他人需要帮助,我会添加此评论。实际上,您需要的是分支规范来为您提供正确的逻辑分支名称。这是这里明确提到的:confluence.jetbrains.com/display/TCD10/…。然后你可以使用 %teamcity.build.branch% 因为它基本上是逻辑分支名称。 @bigbearzhu 您能否将其添加为答案?我会自己做,但你应该得到它的功劳。 【参考方案1】:我相信你需要的是另一个变量。尝试使用 %vcsroot.branch%。还有 %teamcity.build.branch%,但默认分支上会包含“
http://confluence.jetbrains.com/display/TCD7/Working+with+Feature+Branches#WorkingwithFeatureBranches-branchSpec.
【讨论】:
非常感谢,一直在寻找这个 其实是%teamcity.build.branch%。 %vcsroot.branch% 只是为您提供默认设置的任何内容,这通常比大多数人所寻找的有用得多。 处理我发现如果你在 VCS 中设置了一个分支,那么 %teamcity.build.branch%
是没有定义的。如果您定义了多个分支,那么%vcsroot.branch%
只会报告默认分支的名称。
我最终使用了一个 git 命令来给出当前分支的名称。
Powershell:
$branch = (git symbolic-ref --short HEAD) | Out-String
命令行:
FOR /F "tokens=* USEBACKQ" %%%%F IN (`git symbolic-ref --short HEAD`) DO (
SET branchName=%%%%F
)
ECHO %%branchName%%
TeamCity 转换所有 %% -> % 所以这就是为什么有这么多 %
设置为环境变量
如果您想使用分支名称作为环境变量以在项目的其他步骤中使用,您可以使用 Powershell 作为示例来设置分支名称。首先在您的构建配置中定义 env.currentBranch,然后使用以下 powershell 将其设置为您的第一个构建步骤。
$branch = (git symbolic-ref --short HEAD) | Out-String
Write-Host "##teamcity[setParameter name='env.currentBranch' value='$branch']"
【讨论】:
老实说不知道为什么到目前为止这还不是 TC 内置的以上是关于teamcity 中的 Git 短分支名称的主要内容,如果未能解决你的问题,请参考以下文章
使用 windows 代理从 teamcity 推送更改到 git 的步骤是啥