У нас есть сценарий, в котором:
Пользователи TFS 2015 фиксируют возвраты с помощью CI, в рамках сборки CI мы запускаем команды GIT, которые синхронизируют текущее репозиторий TFS 2015 с VSTS GIT Repo.
Ниже приведен код (часть синхронизации)
Сразу после синхронизации кода в VSTS запускается сборка CI в VSTS. (Для этого конкретного репо). скажем, например: Номер сборки Testbuild_0.1.8
Требуется динамически читать состояние сборки VSTS и обновлять состояние в TFS 2015. Я создал скрипт (см. Ниже), который получает состояние сборки и отображения (но мне нужно отправить жестко закодированное значение, Есть ли способ, где я могу читать динамически?
Код 1:
<code><pre> <code> git remote add vsts https://Personal%20Access%20Token:$PATToken@test.visualstudio.com/$GITProject/_git/$GITRepo 2>&1|Write-Host
git checkout ${env:BUILD_SOURCEBRANCHNAME}
git reset --hard origin/master
git push vsts ${env:BUILD_SOURCEBRANCHNAME}
Код 2:
Мне нужно прочитать значение Build ID или номер сборки динамически и передать значение, чтобы получить статус сборки. Ниже [строка] $ buildNumber = "Testbuild_0.1.8" (отмечен жирным шрифтом) должен читаться динамически?
<code><pre> <code >
[CmdletBinding()]
Param(
[string] $TFSURL = "https://remotevsts.visualstudio.com",
[string] $TeamProject = "Test TP",
**[string]$buildNumber = "Testbuild_0.1.8",**
[string]$user = "test@live.com",
[string]$token = "tokenid"
)
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$uri = "$TFSURL/$TeamProject/_apis/build/builds?api-version=2.0&buildNumber=$($buildNumber)"
$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
if ($result.count -eq 0)
{
throw "Unable to locate Build ID for Build Number $($buildNumber)"
}
$buildId = $result.value[0].id
Write-Host "$buildId"
$uri = "https://remotevsts.visualstudio.com/Test TP/_apis/build/builds/$($buildId)?api-version=2.0"
$responseFromGet = Invoke-RestMethod -Method Get -ContentType application/json -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64authinfo)}
$status = $responseFromGet.status
Write-Host "$status"
while($status -ne "completed"){
Start-Sleep -Seconds 60
$responseFromGet = Invoke-RestMethod -Method Get -ContentType application/json -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64Authinfo)}
$status = $responseFromGet.status
Write-Host "Status: " + $status
}
if ($responseFromGet.result -eq "succeeded")
{
Write-Host "##vso[task.complete result=Succeeded;]Done"
}
else
{
Write-Error "##vso[task.complete result=Failed;]Error testing if demo site is up"
exit 1
}