Azure DevOps | Запуск выпуска из Powershell и передача переменной процесса (настраивается во время выпуска)

Можно ли запустить выпуск из PowerShell (задача PowerShell в конвейере сборки) и передать переменную процесса (настраиваемую во время выпуска)?

Задача:

У нас есть конвейер с несколькими ветвями. Я хочу запустить выпуск (в котором переменные устанавливаются во время выпуска) из сборки на основе имени ветки.

Причина использования переменных во время выпуска заключается в том, что его переменная используется для нацеливания на определенные ресурсы в Azure.


person Mohamed Shehata    schedule 18.10.2018    source источник


Ответы (1)


Мы можем запустить выпуск из Powershell, вызвав REST API (Выпуски - Создать), но не может передавать переменную процесса (устанавливается во время выпуска).

Потому что мы должны указать конкретный artifact version ID (какой артефакт будет использоваться для запуска выпуска) в теле запроса. Как только artifact version ID предоставлен, переменная больше не используется.

Вы можете указать ниже сценарий PowerShell для запуска выпуска:

Param(
   [string]$collectionurl = "https://{account}.vsrm.visualstudio.com",
   [string]$projectName = "GIT",
   [string]$user = "username",
   [string]$token = "password",
   [string]$releasedDefinitionId = "3" 

)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

function CreateJsonBody
{
    $value = @"
{
 "definitionId":$releasedDefinitionId,
 "artifacts":[{"alias":"_BitBucketDev",
                "instanceReference":{"id":"454",
                       "name":"454",
                       "definitionId":"58",
                       "sourceBranch":"master",
                    }
                }
            ],

 "isDraft":false,
 "manualEnvironments":[]
"@

 return $value
}

$json = CreateJsonBody

$uri = "$($collectionurl)/$($projectName)/_apis/Release/releases?api-version=4.1-preview.6"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

$ReleaseID = $result.id

Write-Host "ReleaseID:" $ReleaseID
person Andy Li-MSFT    schedule 19.10.2018