如何在Teamcity中设置内部版本号?

时间:2016-06-30 14:33:22

标签: powershell teamcity

我正在尝试使用Powershell在Teamcity中设置内部版本号格式(有点像在Octopus Deploy blog post中)。

但是,我不知道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

我哪里错了?

2 个答案:

答案 0 :(得分:4)

似乎脚本的最后一行应该是:

Write-Host "##teamcity[buildNumber '${buildNumber}']"

注意:要使脚本正常工作,if应该在TeamCity构建步骤中指定为内联脚本(这使得TeamCity%-references可以工作)。

顺便说一句,您可以通过在VCS根目录中使用+:refs / heads / * branch specification来使TeamCity显示短分支名称

答案 1 :(得分:2)

如果您正在使用powershell,您的代理可以将内部版本号作为环境变量使用,在PowerShell中可用:

$env:BUILD_NUMBER

这是您可以通过构建配置UI配置的数字。