2014-06-11 69 views
14

我正尝试使用Powershell脚本更新TeamCity中的环境变量。但是,它不更新变量的值。我怎样才能做到这一点?更新TeamCity powershell脚本中的变量

下面是我当前的代码,获取currentBuildNumber罚款:

$currentBuildNumber = "%env.currentBuildNumber%" 
$newBuildNumber = "" 
Write-Output $currentBuildNumber 
If ($currentBuildNumber.StartsWith("%MajorVersion%") -eq "True") 
{ 
$parts = $currentBuildNumber.Split(".") 
$parts[2] = ([int]::Parse($parts[2]) + 1) + "" 
$newBuildNumber = $parts -join "." 
} 
Else 
{ 
$newBuildNumber = '%MajorVersion%.1' 
} 

//What I have tried 
$env:currentBuildNumber = $newBuildNumber 
Write-Host "##teamcity[env.currentBuildNumber '$newBuildNumber']" 
Write-Host "##teamcity[setParameter name='currentBuildNumber' value='$newBuildNumber']" 
+0

对于我自己参考,请参阅https://confluence.jetbrains.com/display/TCD9/Build+Script+Interaction+with+TeamCity有关##符号更多信息 –

回答

15

尝试

"##teamcity[setParameter name='env.currentBuildNumber' value='$newBuildNumber']"

(注意ENV前缀名称。)

此外,您还可以尝试增加PowerShell标准列默认值(使用TeamCity的命令运行器)。如果您的服务信息比这更长,那么TeamCity将无法解析它。

if ($env:TEAMCITY_VERSION) { 
    $host.UI.RawUI.BufferSize = New-Object System.Management.Automation.Host.Size(8192,50) 
} 
+0

对不起我的错,所有的名字是一样的,它仍然无法正常工作请参考我的更新问题 –

+1

您确定您需要WriteHost吗?尝试它只是在引号 – SteveChapman

+1

稍后会试一试,但写主机“## teamcity [buildNumber'$ newBuildNumber']”的作品 –