Получить, прошел ли запрос на вытягивание все необходимые проверки статуса с помощью GitHub API.

Мне нужно через GitHub API проверить, прошел ли запрос на вытягивание все необходимые проверки состояния. В данный момент я использую GitHub Enterprise 2.8.

Я знаю, что могу получить все проверки состояния для последней фиксации (после statuses_url в запросе на вытягивание). Однако я не знаю, какие проверки состояния необходимы в данном репозитории. Это моя главная проблема.

Мне также нужно объединить эти проверки состояния, сгруппировать их по context и взять последние в каждом контексте. Это нормально, но, похоже, это повторная реализация логики, которую GitHub выполняет внутри, когда решает, можно ли объединить запрос на вытягивание.

В моем случае было бы идеально иметь что-то вроде can_be_merged в полях запроса на вытягивание, что означает mergeable && all required status checks passed && approved, но, насколько я знаю, такого поля нет.


person algebraic    schedule 07.06.2017    source источник
comment
ты когда-нибудь это понял? Я собирался опубликовать почти тот же вопрос. Я лил документы, чтобы понять это, но безрезультатно...   -  person moustachio    schedule 23.06.2019
comment
Нет, в итоге я жестко запрограммировал необходимые проверки статуса в своем приложении :(   -  person algebraic    schedule 24.06.2019


Ответы (1)


Наконец решил это! На самом деле вам нужно получить информацию из защищенной ветки, а не из самой проверки. Вот некоторые сведения об API: https://developer.github.com/v3/repos/branches/#list-required-status-checks-contexts-of-protected-branch.

Таким образом, поток для решения этой проблемы:

  1. Проверить, защищена ли базовая ветка для PR, и если да;
  2. Используйте вышеуказанную конечную точку, чтобы определить, какие проверки необходимы;
  3. Сравните проверки последней фиксации PR с необходимыми проверками, определенными на шаге 2.
person moustachio    schedule 04.07.2019