Используйте GitHub API, чтобы отключить кнопку слияния в запросе на вытягивание и повторно включить ее с помощью REST

Я разработал свой собственный веб-сервер, который делает автоматизацию на моем приложении android. Если есть проблемы при запуске автоматизации, я хочу программно отключить кнопку "слияние" в запросе GitHub pull с помощью команды cURL REST. Я не могу выяснить, правильный способ сделать это, но кажется, что многие люди выиграют от этой функции.

api для запросов GitHub pull можно найти здесь:https://developer.github.com/v3/pulls/

I знайте, что это возможно, потому что если у вас есть конфликты слияния в вашей ветви, кнопка становится серой, и вы не можете щелкнуть/объединить ее. Это именно та функциональность, которую я ищу. Любая помощь будет высоко ценится.

2 ответов


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

  1. настроить некоторые из ваших ветвей (обычно это master и develop, зависит от вашего документооборота) as protected.
  2. используя статусы API вы можете отправить Pending, Success, Error и Failure статусы. Pending,Error и Failed статусы будут блокировать кнопку объединить.

после готово вы можете публиковать статусы на основе ваших бизнес-правил.

POST /repos/:owner/:repo/statuses/:sha

:sha хэш последнего коммита на запрос

С полезной нагрузкой вроде этого:

{
  "state": "success",
  "target_url": "https://link.to/some/repotring/page",
  "description": "Automation tests passed!",
  "context": "continuous-integration/automation-tests"
}

одна вещь стоит упомянуть. Когда вы разнесли хотя бы один статус, значение от context файл будет показан на странице настроек защищенной ветви. Не забудьте отметить этот статус требуется:

Require status checks to pass before merging

защищенные ветви и необходимые проверки состояния


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