2015-10-30 67 views
8

Opracowałem własny serwer sieciowy, który wykonuje automatyzację na mojej aplikacji dla systemu Android. Jeśli występują problemy podczas uruchamiania automatyzacji, chcę programowo wyłączyć przycisk "scalania" na żądanie pobierania github przy użyciu polecenia CURL REST. Nie mogę znaleźć właściwego sposobu, aby to zrobić, ale wydaje się, że wiele osób skorzystałoby z tej funkcji.Użyj interfejsu API Github, aby wyłączyć przycisk scalania na żądanie pobrania i ponownie go użyć, korzystając z usługi REST

API dla żądań pociągowych GitHub można znaleźć tutaj: https://developer.github.com/v3/pulls/

wiem, że jest to możliwe, ponieważ jeśli masz scalić konfliktów na swoim oddziale, przycisk zostanie wyszarzona i nie można kliknąć/scalić. To jest dokładnie ta funkcja, której szukam. Każda pomoc byłaby bardzo cenna.

Odpowiedz

5

Jest to możliwe. Jest kilka kroków, które należy wykonać, aby włączyć tę funkcję.

  1. Configure niektórych swoich oddziałów (zazwyczaj jest to master lub/i develop, zależy od przepływu pracy) as protected.
  2. Używając Statuses API możesz wysyłać stany: Pending, Success, Error i Failure. Pending, Error i Failed statusy będą blokować przycisk Merge.

Po zakończeniu można ustawić status POST na podstawie reguł biznesowych.

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

:sha jest hash ostatni popełnić we Wniosku Pull

Przy ładowności jak ten:

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

Jedno warto wspomnieć. Po opublikowaniu co najmniej jednego stanu, wartość z pola context zostanie wyświetlona na stronie ustawień chronionego oddziału. Nie zapomnij, aby oznaczyć ten status zgodnie z wymaganiami:

Require status checks to pass before merging

Protected branches and required status checks

0

Ochrona oddziału, a następnie blokuje połączenia jeżeli kontrole stanu nie przechodzi lub opinii nie są wykonywane prace. To bardzo proste rozwiązanie i działa idealnie. Ale jeśli jesteś bardziej ciekawy, spróbuj to zrobić bez ochrony gałęzi. Nie mogłem znaleźć sposobu na zrobienie tego.