Можно ли получить параметры из запроса извлечения для параметров управления на Azure Devops Pipelines? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть простой конвейер на Azure dev ops, который имеет 4 задания

  • Npm i
  • Npm Выполнить тесты
  • Npm Bump version
  • Npm release

Это работает. На данный момент Bump версии делает только 'патч' каждый раз, когда PR делается в основной ветке. Таким образом, он выпускает только версии патчей ... У меня есть специальное условие для этого: contains(variables['Build.SourceBranch'], 'refs/heads/master'). Ну, я хочу добавить еще одно условие, которое решает динамически повышать версию как патч, мажор или минор, например ... Итак, я подумал получить этот параметр из заголовка или описания запроса на получение sth вот так ..:

contains(variables['Build.PR.Title'], 'patch') contains(variables['Build.PR.Title'], 'major') contains(variables['Build.PR.Title'], 'minor')

Это действительно 3 разных задания, которые сработают, если заголовок pr имеет «patch», «major» или «minor». Возможно ли это? сделать что-то подобное или есть более простой способ? :))

Спасибо заранее!

1 Ответ

1 голос
/ 03 февраля 2020

Azure конвейер Devops не передает заголовок prs. Здесь вы можете найти предопределенные переменные: Использовать предопределенные переменные . Для получения подробной информации об активном запросе на извлечение вы можете использовать Rest Api Pull Requests - Получить запрос на извлечение по идентификатору с System.PullRequest.PullRequestId. Например, чтобы получить заголовок:

  1. Добавьте пользовательскую переменную Определите переменные , такие как Custom.PRTitle.
  2. Установите доступ к PAT в вашей работе. System.AccessToken
  3. Добавьте первый шаг в качестве скрипта для чтения и сохранения заголовка ваших запросов извлечения, как в PowerShell:
$user = ""
$token = "$(System.AccessToken)"
$teamProject = "$(System.TeamProject)"
$PRId = "$(System.PullRequest.PullRequestId)"
$orgUrl = "$(System.CollectionUri)"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uriGetActivePr = "$orgUrl/$teamProject/_apis/git/pullrequests/$PRId"

$resultPR = Invoke-RestMethod -Uri $uriGetActivePr -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

Write-Host "##vso[task.setvariable variable=Custom.PRTitle]"$resultPR.title

Тогда вы можете используйте вашу новую переменную в ваших условиях, например:

and(contains(variables['Build.SourceBranch'], 'refs/heads/master'), contains(variables['Custom.PRTitle'], 'patch'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...