我正在使用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的字符串? 提前谢谢你,
答案 0 :(得分:0)
您是否尝试直接编写命令以允许powershell扩展内联变量(不使用'join')?
如:
$cmdGetExactTag = "git describe --exact-match --abbrev=0 --tags $customRevision --always"
我认为teamcity参数的解析可能正在发生,但问题在于连接的语法。提出的解决方案是指出这种特殊情况的连接似乎没有必要。