Как создать статус запроса на извлечение VSTS из успешного выпуска?

У нас есть приложение типа хранилища данных, поэтому простой сборки недостаточно для проверки запроса на вытягивание. У нас есть конвейер релизов, который автоматически запускает релиз в дымовую среду. Если это развертывание прошло успешно, запрос на вытягивание может быть выполнен.

Похоже, что Pull Request Status API идеально подходит для этого. Однако я не могу понять, как получить pullRequestId из релиза.

В определении сборки есть переменная $(System.PullRequest.PullRequestId), но ее нет в определении выпуска.

В настоящее время я тестирую хакерское решение - на этапе сборки записать новый файл в каталог артефакта с $(System.PullRequest.PullRequestId) в нем. Затем это доступно для выпуска. Надеюсь, есть более простой способ.




Ответы (1)


Кажется, сборка запускается проверкой PR, а выпуск запускается артефактами сборки. Затем вы можете получить идентификатор запроса на вытягивание из предопределенной переменной $(Release.Artifacts.vs2017.SourceBranch).

Поскольку сборка запускается для проверки PR, формат исходной ветки будет таким:

refs/pull/{PullRequestId}/merge

Во время выпуска вы можете получить исходную ветку $(Release.Artifacts.vs2017.SourceBranch). Затем разделите строку на /, и вы получите идентификатор запроса на извлечение. Ниже приведен пример (переменная $prid предназначена для идентификатора запроса на вытягивание):

$t="$(Release.Artifacts.vs2017.SourceBranch)"
$pr=$t -split '/'
$prid=$pr[2]
echo "the pull request id is $prid"
person Marina Liu    schedule 07.06.2018
comment
Можно ли также получить идентификатор итерации PR? Я хотел бы сбросить статус политики при каждом нажатии. - person James; 08.06.2018
comment
Что вы имеете в виду, идентификатор итерации PR? А какая разница с PR id? А с PR id достаточно изменить статус PR. - person Marina Liu; 08.06.2018
comment
В политике филиала для проверок на основе кода вы должны выбрать Сбросить статус всякий раз, когда появляются новые изменения, но это вызывает предупреждение. Опция сброса статуса ограничивает статус итерациями. Попытки опубликовать статус в запросе на вытягивание вместо итерации не увенчаются успехом. API для вызова вместо этого: docs.microsoft.com/en-us/rest/api/vsts/git/ - person James; 08.06.2018
comment
Можете ли вы показать соответствующие снимки экрана для состояния сброса всякий раз, когда вы устанавливаете новый параметр изменений и предупреждение? - person Marina Liu; 08.06.2018
comment
Настроили ли вы свой собственный сервер статуса запроса запроса? Иначе нельзя использовать идентификатор итерации PR? - person Marina Liu; 11.06.2018
comment
Нет, я нигде не вижу в документах, что это необходимо. Похоже, что если вы знаете идентификатор итерации, вы можете отправить статус. Кстати, я отмечаю это как ответ на вопрос. Возможно, откроется новый вопрос специально для идентификатора итерации. - person James; 15.06.2018
comment
Это документ для создания сервера состояния запросов по запросу docs.microsoft.com/en-us/vsts/git/how-to/. И если у вас есть проблемы с идентификатором итерации, вы можете опубликовать новый вопрос :) - person Marina Liu; 18.06.2018