在teamcity中使用Git短分支名称

时间:2013-12-11 08:28:59

标签: git teamcity nuget continuous-deployment

我正在使用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-参/头/特征-1

此版本不支持nuget版本控制。 nuget not comparative“/".

我需要这个,

%build.number% - %teamcity.build.vcs.SHORT_BRANCH_NAME.VCS_ROOT_ID%---> 1.0.0.356特征-1

我该怎么办?

由于

2 个答案:

答案 0 :(得分:26)

我相信你需要的是另一个变量。尝试使用%vcsroot.branch%。还有%teamcity.build.branch%,但是在默认分支上会包含“< default> ”。如果您希望更灵活地选择确切选择分支名称的哪个部分,您可以按照此页面上的说明操作:

http://confluence.jetbrains.com/display/TCD7/Working+with+Feature+Branches#WorkingwithFeatureBranches-branchSpec

答案 1 :(得分:1)

我发现,如果您在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']"