2016-08-03 2 views
0

2015 I 2015 업데이트 TFS를 사용하고 3 온 - 프레미스.2015 내가 올바른 방법은 TFS와 새로운 API 2.0 빌드 엔진에 <strong>정의 된 변수</strong> 및 <strong>빌드 정의 인수</strong>을 전달하는 방법을 찾는 데 어려움을 겪고있어

I는 다음과 같습니다 PowerShell을 가진 POST를 트리거했습니다

$Build_Definition_ID = 1234 
$TFSInstanceURL = 'http://tfsservername:port/tfs' 
$ProjectCollection = 'CollectionName' 
$TeamProject = 'ProjectName' 
$Changeset = "12345" 
$UserName = "$env:USERDOMAIN\$env:USERNAME" 
$UserNamePartial = $env:USERNAME 


$body = @" 
    { 
     "definition": { 
      "id": "$Build_Definition_ID" 
     } 
    } 
"@ 

$baseUri = $TFSInstanceURL+"/"+$ProjectCollection+"/"+$TeamProject+"/_apis/build" 
$postUri = $baseUri+"/builds?api-version=2.0" 

##Create a new PSCredential based on username/password 
$User = 'foo\bar' 
$Password = 'examplepass' 
$securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force 
$credential = New-Object System.Management.Automation.PSCredential($User, $securePassword) 

### Queue a build ### 
##Call the REST API for TFS that does a POST request to queue a build with the body of the request to be the build definition 
$buildResponse = Invoke-RestMethod -Method POST -Credential $credential -ContentType application/json -Uri $postUri -Body $body 

#Write-Host (ConvertTo-Json $buildResponse) 
#ConvertTo-Json $buildResponse | out-file -FilePath $Changeset-ResponseJson.json -Force 

파워 쉘 스크립트가 성공적으로 정의를 발사하고있다. 그러나, 나는하지 성공적으로 여전히 해요 : - 사용자 정의 변수에 전달 또한

값 - I (예 : C12345) 가에 대해 실행하려는 특정 소스 버전에 전달 : 당신이 전달하는 적절한 방법을 알고있는 경우 (다른 브랜치를 동적으로 선택할 수 있도록) 소스에서 맵핑 할 폴더와 같은 인수에서 이것이 도움이 될 것입니다.

현재 자원은 내가 평가했습니다

답변

2

신체 부위를 제출해야 모양은 다음과 같습니다.

{ 
    "definition": { 
    "id": 28 
    }, 
    "sourceBranch": "$/xxxx/xxxx", 
    "SourceVersion": "Cxxxx", 
} 

sourceBranch 및 SourceVersion을 지정할 수 있습니다.

============================================== =====================

예 :

$Build_Definition_ID = '28' 
$TFSInstanceURL = 'http://tfsservername:port/tfs' 
$ProjectCollection = 'DefaultCollection' 
$TeamProject = 'TestCase' 
$Changeset = "C139" 
$sourceBranch = "$/TestCase/TestCaseProject-branch" 

$body = @" 
    { 
     "definition": { 
      "id": "$Build_Definition_ID" 
     }, 
     "sourceBranch": "$sourceBranch", 
     "SourceVersion": "$Changeset", 
    } 
"@ 
+0

당신이 변수에 대한 통찰력을 제공 할 수 있습니다. 그게 내가 풀려고했던 모든 문제를 완성시킬거야. 감사! – SheldonH

+0

당신은 $ 변경 집합에 "SourceVersion"을 전달하는 시도하고, 응답에 업데이트 된 예제를 확인 "sourceBranch"할 수있는 새로운 변수 $ sourceBranch을 만들 수 있습니다. –

+0

확인. 그 문제를 해결하고 업데이트 해 드리겠습니다. 좋은 사례를 제공하는 데 시간을내어 주셔서 감사합니다. 희망이 작업을 'SourceVersion'를 얻기 위해 하나 개 필요하지 TFS의 버전을 시시 - MSFT @ 법안 – SheldonH