Сделайте контекстные проверки github, необходимые для прохождения

У меня есть 4 конвейера Azure, которые выполняют проверки при создании PR. Они настроены таким образом, что определенные проверки исключаются / включаются на основе внесенных изменений. Например, если PR содержит только изменения кода внешнего интерфейса, нет причин запускать конвейер проверки, связанный с проверкой изменений кода внутреннего интерфейса.

В конфигурации веток GitHub есть опция "Требовать прохождения проверки статуса перед объединением", но когда вы проверяете, что вы должны выбрать, какие конвейеры должны пройти. Это устанавливает его так, что выбранный вами конвейер должен запускаться и проходить для слияния, но с нашей конфигурацией у него может не быть причины для запуска, поэтому PR застрянет навсегда.

Есть ли способ, чтобы проверки статуса GitHub должны были пройти перед слиянием, но проверки статуса, которые должны пройти, определяются во время создания PR, а не заранее?

1 ответ

Решение

На основании своего теста я смог воспроизвести эту ситуацию.

Когда я создаю множественную проверку статуса (Azure Pipeline) в Github, эти проверки принимают статус сборки только после создания запроса на извлечение.

Следовательно, из-за некоторой конфигурации (например, фильтра пути), если связанный конвейер не работает, этот PR зависнет.

В этой ситуации вы можете использовать API для отправки существующего состояния конвейера Azure для проверки состояния.

URL-адрес API:

       Post https://api.github.com/repos/{owner}/{repo}/statuses/{sha}

Reuqest Body:

       {
  "state": "success",
  "target_url": "Build Status badge Url",
  "description": "Build verify",
  "context": "Staus Check name"
}

Затем вы можете пройти проверку статуса в Github.