TeamCityでビルドステップを設定するGitとPowershellを使用しています。 TeamCityでカスタムビルドを行うときに、カスタムコミット用のGitタグを抽出する必要があります。TeamCityでConfigurationParameterをstringに変換する
TeamCityにConfigurationParameter%CustomRevision%(テキストタイプの)を導入しました。カスタムビルドを開始する前に、コミットのハッシュを提供するこのパラメータを手動で入力します。 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
"%CustomRevision%"をPowerShellの文字列に正しく変換する方法は? ありがとうございます。
入力引数の右側に '-join'演算子を移動します:' 'git describe --exact-match --abbrev = 0 --tags"、$ customRevision、 "--always" -join "" ' –
私はそれをしたら、私は持っています:Invoke-Expression:単項演算子 ' - 'の後に式がありません。C:¥BuildAgent¥temp¥buildTmp¥powershell5077669800046396338.ps1:18 char:25 + $ tag = Invoke-Expression <<<< $ cmdGetExactTag +カテゴリ情報:ParserError:( - :String)[Invoke-Expression] 、ペンシルバニア rseException + FullyQualifiedErrorId:MissingExpressionAfterOperator、Microsoft.PowerSh ell.Commands.InvokeExpressionCommand – Alex