2017-09-10 10 views
1

Google 제품은 GitHub에서 WebHooks를 만듭니다. 각 고객 프로젝트마다 하나씩.지점 별이 아닌 GitHub WebHooks가 전체적으로 실행됩니다.

각 프로젝트는 단일 분기에 연결됩니다.

GitHub에 대해 push을 수행하면 해당 WebHook가 트리거되고 차례로 특정 작업을 수행하기 위해 엔드 포인트에 요청을 보내고 있습니다.

일반적인 시나리오는 고객이 동일한 저장소의 여러 분기에 연결된 여러 프로젝트를 보유한다는 것입니다. 따라서 여러 WebHook이 동일한 저장소에 연결됩니다.

push이 브랜치 중 하나에 수행되면 GitHub가 모든 저장소와 관련된 WebHooks를 트리거합니다.

특정 브랜치에 푸시가 발생하면 하나의 해당 WebHook 만 트리거 될 것으로 예상됩니다.

가능한 솔루션은 ref을 구문 분석하는 것입니다 :

나는이 문제를 참조하는 것이 개 게시물을 (그 중 하나가 2012 년부터입니다) 발견 매개 변수를 webhook 요청 내에서 전송하고 그에 따라 조치를 취할시기를 제어합니다 (아직 방향을 확인하지 않았으므로 ref이 항상 존재하며 올바른 분기 경로/이름을 보유하고 있음). 그러나 그것은 "너무 늦게"될 것입니다 - 모든 WebHooks가 그때까지 방아쇠를 당길 것이기 때문에 ...

GitHub가 어떻게 든이 동작을 구성 할 방법이 없을 것 같습니다.

도움을 받으실 수 있습니다.

+0

푸시 이벤트에 대해 단일 webhook을 구문 분석하고 분기별로 필터링하십시오. 또는 각 리포에 개별 웹 훅이있는 각 고객 프로젝트를 포크 할 수 있습니다. – osowskit

답변

2

나는 GitHub 지원을 받고 있습니다.

이 게시물이 WebHooks와 저장소/지점 간의 관계를 오해하는 사람들에게 도움이되기를 바랍니다.

여기에 자신의 대답 : 당신이 관찰

동작이 예상되고 가까운 장래에 에게 그것을 변경할 계획이 없습니다. 이

https://developer.github.com/v3/activity/events/types/#pushevent

: 어떤 지점이나 태그에 푸시 할 때은 webhook가, 을 트리거 여기에 설명 된대로 -

당신이 저장소에은 webhook를 작성하고 푸시에 이벤트를 구독

분기 별 웹 훅이 아닙니다. 대신 같은 저장소에 푸시 이벤트 에 가입 한 여러 webhooks을 만드는

그래서, 당신의 이름을 하나를 만들고, 당신이 눈치 (당신이받는 페이로드에서 푸시 된 지점 확인해야합니다 브랜치는 페이로드의 ref 필드를 통해 전달됩니다).

이 대답은 우리의 개념이 잘못되었음을 깨닫게했습니다.

분기가 웹 훅에 매핑되지 않습니다. 각은 webhook은 저장소에 연결되며,이 만든 지점에 커밋 할 때, 분기 진술 한은 webhook 웹 요청 내부 ref 속성 내에서, 다음과 같이 :주의해야 할

{ 
    "ref": "refs/heads/branch_name", 
    ... 

또 다른 한가지는 점이다 GitHub의

당신은 각 설치 대상 (특정 조직 또는 특정 저장소)에 각 이벤트에 대해 20 webhooks을 만들 수 있습니다 : 저장소 - 이벤트 당 생성 할 webHooks의 수를 제한합니다.

그것은 여기에서 찍은이 맥락에서 중요

https://developer.github.com/webhooks/

이는 push 이벤트 지점 당은 webhook의 생성을 유발 만든 우리가 따라서 20 WebHooks의 한계에 도달 추가 WebHook을 만들려고 할 때 오류가 발생합니다.

저장소 당 하나의 웹 훅에서 보관하면 문제가 해결됩니다.