Using repository hooks
フックを使用すると、リポジトリが変更されたときに Bitbucket が実行する処理を拡張することができます。これにより、チームのワークフローをカスタマイズし、他のシステムと連携することができます。
リポジトリ内で特定のイベント (コードのプッシュ、プル リクエストのマージなど) が発生するたびにフックを自動的に実行するよう構成できます。
Bitbucket Server は、pre-receive と post-receive の 2 つのフックをサポートします。フックはシステム管理者によってインストールされ、プロジェクト内のすべてのリポジトリに有効化することも、個別リポジトリに対して有効化することもできます。
On this page:
Pre-receive フック
Pre-receive フックを使用すると、プッシュがコミットされる前またはプル リクエストがマージされる前に、リポジトリに取り込まれるコミットを制御できます。例えば、pre-receive フックは特定の条件が満たされていない場合にリポジトリへのプッシュを拒否できます。リポジトリへの強制プッシュを防いだり、すべてのコミットに有効な Jira アプリケーションの課題キーが含まれているかどうかを確認したりすることができます。
既定の pre-receive フック
Bitbucket Server にはいくつかの pre-receive フックが付属しており、既定では無効化されていますが、プロジェクト内のすべてのリポジトリ、または個別リポジトリに対して有効化することができます。
Bitbucket Server に付属する既定のフックは次のとおりです。
- 強制プッシュの拒否 - リポジトリへのすべての強制プッシュを拒否します。
- コミット署名の検証 - 検証済みの GPG 署名のないコミットとタグを拒否します。
- コミッターの検証 - リポジトリへにプッシュしたユーザー以外によるコミットを拒否します。
Post-receive フック
コミットの処理後に実行される post-receive フックは、一般に外部サービスの更新や通知の送信に使用されます。例えば、Bitbucket Server Web Post Hooks プラグインは、チャット クライアントにメッセージを送信したり、連携サーバーに変更を通知したりすることができます。
5.0 より前のリリースの場合、Bitbucket Server は 2 つのタイプの post-receive フックをサポートします。
- PostReceiveHooks used to map to Git's
post-receive
hooks. They ran on the Bitbucket Server instance after a push. - AsyncPostReceiveRepositoryHooks: Bitbucket Server インスタンスで実行されます。
5.0 以降ではこれらはいずれも廃止され、以下に置き換えられました。
- PostRepositoryHooks: PR マージと post-receive の両方で呼び出されます。
プロジェクトのすべてのリポジトリ用にフックを構成
プロジェクト レベルでフックを有効化 (または無効化) すると、プロジェクト設定を継承するよう設定されたリポジトリのフックが変更されます。個別リポジトリのフックを変更したことがある場合、プロジェクト レベルでフックを設定してもそのリポジトリの設定は変更されません。
プロジェクト内のリポジトリに対してフックを有効化 (または無効化) する方法 (プロジェクト管理権限が必要):
- [プロジェクト設定] > [フック] に移動します。
- フックごとにトグルをクリックして有効化 (または無効化) します。
プロジェクトで継承に設定されたリポジトリのフックは、この新しい設定を反映するようになります。リポジトリ レベルで明示的に設定されているフックは影響を受けません。
個別リポジトリ用にフックを構成
リポジトリ レベルでフックを設定すると、プロジェクト レベルで構成されたチェックはオーバーライドされます。個別リポジトリにフックを構成していない場合、プロジェクト レベルで設定されたフックが継承されます。
1 つのリポジトリにフックを有効化 (または無効化) する方法 (リポジトリ管理権限が必要):
- [リポジトリ設定] > [フック] に移動します。
- フックの右側のドロップ メニューを使用して設定します。
- 継承 - プロジェクト レベルで設定された構成を使用します。
- 有効 - フック条件を適用します。
- 無効 - フック条件を無視します。
設定すると、プロジェクト レベルでフック構成に加えられたあらゆる変更は、プロジェクト構成とは独立して変更されるため、このリポジトリでは無視されます。
継承されたフック構成
既定は、Bitbucket Server にはプロジェクトおよびリポジトリ レベルで無効化されたフックが付属します。リポジトリ レベルでフックが構成されていた場合を除き、プロジェクト レベルでフックを有効化または無効化すると、リポジトリ レベルの構成が継承されます。
たとえば、プロジェクトの [強制プッシュを拒否] フックを有効にし、リポジトリのフック設定は変更しない場合、各リポジトリでは [強制プッシュを拒否] フックが有効化されます。
フックが無効 (プロジェクト レベル) | フックが無効 (リポジトリ レベル) |
フックが有効 (プロジェクト レベル) | フックが有効 (リポジトリ レベル) |
特定のリポジトリでは [強制プッシュを拒否] フックが適切でないと判断したとします。プロジェクト レベルでの構成内容を問わず、個別リポジトリのフックを変更できます。プロジェクト レベルで [強制プッシュを拒否] フックに加えられた変更は、プロジェクト構成とは独立して変更されるため、このリポジトリでは無視されます。
フックが有効 (プロジェクト レベル) | フックが無効 (リポジトリ レベル) |
新しいフックの追加
追加のフックはシステム管理者がインストールでき、プロジェクト内のすべてのリポジトリに対して有効化することも、個別リポジトリに対して有効化することもできます。
Atlassian Marketplace からフックを追加する方法 (システム管理者権限が必要):
- [プロジェクト設定] > [フック] に移動します。
- [フックを追加] をクリックします。
- 追加するフックを検索し、[インストール] をクリックします。
新しいフックを追加したら、既定のフックと同じように有効化 (または無効化) できます。
フックの作成
独自のフックを作成することもできます。作成開始に役立つリソースを紹介します。