2017-09-10 4 views
1

当社の製品は、GitHubでWebHookを作成します。顧客プロジェクトごとに1つ。ブランチごとではなく、GitHub WebHooksがグローバルにトリガーされる

各プロジェクトは、1つのブランチにリンクされています。

GitHubへのpushが実行されると、対応するWebHookがトリガーされ、順番に、特定の処理を実行するように側のエンドポイントに要求しています。

一般的なシナリオは、顧客が複数のプロジェクトを持ち、同じリポジトリの複数の異なるブランチに接続していることです。したがって、いくつかの異なるWebHooksが同じリポジトリに接続されています。

pushがブランチの1つに対して実行されると、GitHubがすべてのリポジトリ関連WebHookをトリガーするという問題があります。

特定のブランチにプッシュすると、対応するWebHookが1つだけトリガーされることが予想されます。

私はこの問題を参照しているように見える2本の支柱(そのうちの一つが、2012年からである)が見つかりました:可能な解決策はrefを解析することであろう

をパラメータをwebhookリクエスト内で送信し、それに応じてアクションを実行するタイミングを制御します(まだその方向をチェックしていないので、実際には常に正しいブランチパス/名前を保持しています)。しかし、それは "遅すぎる"でしょう - すべてのWebHooksがその時までに起動されるようになるでしょう...

GitHubが何らかの形でこの動作を設定する方法を持っていないと思われます。

助けていただければ幸いです。

+0

プッシュイベント用に1つのwebhooksを解析し、ブランチでフィルタリングします。また、各レポに別々のウェブフックがある場合は、各顧客プロジェクトをフォークすることもできます。 – osowskit

答えて

2

私はGitHubサポートに手を差し伸べました。

私は、この投稿がWebHooksとリポジトリ/ブランチの関係を誤解している人を助けてくれることを願っています。

はここで自分の答えです:あなたが観察

動作が期待されており、近い将来に にそれを変更する予定はありません。リポジトリ上のウェブフックを作成し、プッシュ イベントにサブスクライブ

- 任意のブランチやタグがにプッシュされたときにウェブフックをトリガーする、 ここに記載されているように:

あり

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

ブランチごとのウェブフックはありません。代わりに、同じリポジトリにプッシュイベント に加入して複数のウェブフックを作成する

だから、あなたは、の 名前を一つだけを作成し、あなたが気づいて(あなたが受け取るペイロードからにプッシュされた 枝確認する必要がありますブランチはペイロード内のrefフィールドを介して渡されます)。

この回答は私たちの考えが間違っていたことを実感しました。

ブランチはウェブフックにはマッピングされません。 各ウェブフックをリポジトリにリンクされ、ブランチにコミットが行われたときに、このように、分岐は、ウェブフックのWeb要求内ref属性の内側に記載されている。注意すべき

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

もう一つは、そのGitHubのです

あなたは、各インストール ターゲット(特定の組織または特定のリポジトリ)上の各イベントのために20のウェブフックまで作成することができます:リポジトリ・イベントごとに作成するウェブフックの数を制限します。

それはここから取られた:このコンテキストでは重要です

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

は、pushイベントのために枝あたりのウェブフックの作成を引き起こし、作った私たちは、このように、20のウェブフックの限界に達します追加のWebHookを作成しようとするとエラーが発生します。

リポジトリごとに1つのWebHookに保存すると、その問題は解決します。

関連する問題