2016-08-05 3 views
0

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 용 문자열로 올바르게 변환하는 방법은 무엇입니까? 미리 감사드립니다.

+0

'-join' 연산자를 입력 인자의 오른쪽으로 옮깁니다 :''git describe --exact-match --abbrev = 0 --tags ", $ customRevision,"--always "-join" "' –

+0

만약 그렇다면 다음과 같습니다 : 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

답변

0

powershell이 ​​('join'없이) 변수 인라인을 확장 할 수 있도록 직접 명령을 써 보았습니까?

으로 지역 :

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

나는 인 TeamCity 매개 변수의 해상도가 발생 할 수있다 생각하지만, 문제는 조인 구문 주위입니다. 제시된 해결책은이 특별한 경우에 대한 조인이 필요하지 않다고 지적하는 것입니다.

+0

당신은 심지어 --exact 경기를 설명 $ cmdGetExactTag에 = "자식을이 리팩토링 할 수 --abbrev = 0 --tags % CustomRevision % - 항상 " –

+0

내가 문제가있는 이유를 발견했다. 나는 '$ customRevision ="% CustomRevision % "$ customRevision.Trim(). TrimEnd()'를 믿을 수 없다! 도움을 주셔서 감사합니다! – Alex