我使用的是Teamcity 8.x.x.版本,我把我的Teamcity配置为持续部署。我需要一个功能分支部署。我看到这个文档"http:/confluence.jetbrains.comdisplayTCD8Working+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-refsheadfeature-1。
这个版本不支持nuget版本,nuget不支持比较""。
我需要这个。
%build.number%-%teamcity.build.vcs.SHORT_BRANCH_NAME.VCS_ROOT_ID% ---> 1.0.0.356-feature-1。
我怎么可以?
谅谅
我相信你需要的是另一个变量。试试使用 %vcsroot.branch%. 还有 %teamcity.build.branch%。但是,那一个将包含"<default>"上的默认分支。如果你想更灵活地选择分支名称的哪一部分被选中,你可以按照本页的说明进行操作。
我发现,如果你在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']"