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

Pie*_*arg 5 powershell teamcity

我正在尝试使用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']"
Run Code Online (Sandbox Code Playgroud)

(我也在$branch = "%teamcity.build.branch%"第5行尝试过)

因此,当我尝试此操作时,if语句不会运行,因为尽管在Octopus Deploy给出的示例中,似乎$ branch设置为%vcsroot.branch%not 的实际值,并且将其写入Teamcity的结果是字面上的##teamcity[buildNumber '$buildNumber']。但是,这似乎确实有效,但是内部版本号却没有/,因此我的构建失败了,因为分支设置为refs/head/master而不是just master

我要去哪里错了?

Yae*_*gor 6

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

Write-Host "##teamcity[buildNumber '${buildNumber}']"
Run Code Online (Sandbox Code Playgroud)

注意:为了使脚本起作用,应在TeamCity构建步骤中将其指定为内联脚本(使TeamCity%-引用正常工作)。

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