TeamCity에서 빌드 단계를 구성하는 Git 및 Powershell을 사용하고 있습니다. TeamCity에서 사용자 정의 빌드를 수행 할 때 커밋 커밋을 위해 Git Tag를 추출해야합니다.ConfigurationCarameter를 TeamCity의 문자열로 변환
TeamCity에 ConfigurationParameter % CustomRevision % (텍스트 유형)을 도입했으며 사용자 정의 빌드를 시작하기 전에 커밋의 해시를 제공하는이 매개 변수를 수동으로 채 웁니다.
은 PowerShell 스크립트를 사용하는 것보다, 내가 자식 명령을 실행하는 문자열을 구성 :$customRevision = "%CustomRevision%"
$cmdGetExactTag = -join "git describe --exact-match --abbrev=0 --tags", $customRevision, "--always"
$tag = Invoke-Expression $cmdGetExactTag
그러나 나에게 예외 제공하는 문자열에 "%의 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 + CategoryInfo : ParserError : (- : String) [Invoke-Expression] 펜실베이니아 rseException + FullyQualifiedErrorId : MissingExpressionAfterOperator이 Microsoft.PowerSh ell.Commands.InvokeExpressionCommand – Alex