我正在尝试使用PowerShell在TeamCity中设置构建编号格式(类似于这篇Octopus Deploy 博客文章)。
然而,我不知道自那时以来TeamCity如何处理服务消息是否发生了变化,或者我做错了什么,因为它没有起作用。
我在我的构建配置中将以下Powershell脚本作为第一步:
$buildCounter = "%build.counter%"
$buildConfig = "%system.buildconfig%"
$version = "%system.majorMinorVersion%"
$branch = "%vcsroot.branch%"
if ($branch.Contains("/"))
{
$branch = $branch.substring($branch.lastIndexOf("/")).trim("/")
}
$buildNumber = "${version}.${buildCounter}-${branch}"
Write-Host "##teamcity[buildNumber '$buildNumber']"
我也尝试过在第5行使用$branch = "%teamcity.build.branch%"
因此,当我尝试这样做时,if语句不会运行,因为尽管Octopus Deploy给出的示例中$branch被设置为%vcsroot.branch%
的实际值,但实际上它并没有,它写出到Teamcity的结果是字面意义上的##teamcity[buildNumber '$buildNumber']
。然而,这似乎是可行的,但构建号不能包含/
,因此我的构建失败,因为分支被设置为refs/head/master
而不仅仅是master
。
我错在哪里了?