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

#github #continuous-integration #azure-pipelines #azure-pipelines-yaml #github-check-run

#github #непрерывная интеграция #azure-конвейеры #azure-конвейеры-yaml #github-check-run

Вопрос:

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

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

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

Ответ №1:

Основываясь на моем тесте, я мог воспроизвести эту ситуацию.

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

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

введите описание изображения здесь

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

URL API:

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

Reuqest Тело:

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

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

Комментарии:

1. Спасибо, Кевин! Я думаю, что я был немного неясен относительно желаемого результата. Конечная цель, как можно более простая, заключается в том, что я хочу, чтобы любые проверки, которые запускаются по какой-либо причине, были зелеными, прежде чем PR можно будет объединить. Итак, независимо от того, обнаружены ли 1 или 3 проверки в PR, все они должны проходить для слияния. Возможно ли это?

2. Привет @ B. Остроумие. Я мог понять ваши требования. Но когда вы устанавливаете проверку состояния как требуется, эти обязательные проверки должны быть переданы для завершения слияния. Если необходимо 2, то только 1 и 3 не могут завершить слияние. Итак, ваша идея не может быть реализована сейчас. Обходной путь заключается в использовании API для ручной отправки статуса прохождения в проверку статуса. На мой взгляд, ваши потребности действительно очень ценны.

3. есть ли способ предложить изменения в github для чего-то подобного? Я ничего не нахожу на странице контактов.

4. Привет @ B. Остроумие. Вы можете поделиться своими отзывами на этом сайте: support.github.com/contact/… С другой стороны, если ответ может вам помочь, вы можете рассмотреть возможность его принятия. Спасибо.