在TeamCity中将ConfigurationParameter转换为字符串

时间:2016-08-05 10:57:30

标签: powershell teamcity

我正在使用Git和Powershell配置TeamCity中的构建步骤。 在TeamCity中进行自定义构建时,我需要为自定义提交提取Git Tag。

所以我在TeamCity中引入了ConfigurationParameter%CustomRevision%(Text类型),在开始自定义构建之前,我手动填写此参数,提供提交的哈希值。

比使用PowerShell脚本,我编写一个字符串来运行git命令:

$customRevision = "%CustomRevision%"
$cmdGetExactTag = -join "git describe --exact-match --abbrev=0 --tags", $customRevision, "--always"

$tag = Invoke-Expression $cmdGetExactTag

但是,PowerShell无法转换"%CustomRevision%"字符串给我例外:

Invoke-Expression : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Command'. Specified method is not supported.
At C:\BuildAgent\temp\buildTmp\powershell7046746237377169989.ps1:18 char:25
+ $tag = Invoke-Expression <<<<  $cmdGetExactTag 
+ CategoryInfo          : InvalidArgument: (:) [Invoke-Expression], Parame 
terBindingException
[12:48:14][Step 3/4]     + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Comma 
[12:48:14][Step 3/4]    nds.InvokeExpressionCommand

我应该如何正确转换&#34;%CustomRevision%&#34;到PowerShell的字符串? 提前谢谢你,

1 个答案:

答案 0 :(得分:0)

您是否尝试直接编写命令以允许powershell扩展内联变量(不使用'join')?

如:

$cmdGetExactTag = "git describe --exact-match --abbrev=0 --tags $customRevision --always"

我认为teamcity参数的解析可能正在发生,但问题在于连接的语法。提出的解决方案是指出这种特殊情况的连接似乎没有必要。