Using repository hooks
Hooks let you to extend what Bitbucket Data Center and Server does every time a repository changes, allow you to customize your team's workflow, and enable you to integrate with other systems.
リポジトリ内で特定のイベント (コードのプッシュ、プル リクエストのマージなど) が発生するたびにフックを自動的に実行するよう構成できます。
Bitbucket supports two types of hooks, pre-receive and post-receive hooks. Hooks are installed by system administrators and can be enabled for all repositories in a project, or for an individual repository.
On this page:
Pre-receive フック
Pre-receive フックを使用すると、プッシュがコミットされる前またはプル リクエストがマージされる前に、リポジトリに取り込まれるコミットを制御できます。例えば、pre-receive フックは特定の条件が満たされていない場合にリポジトリへのプッシュを拒否できます。リポジトリへの強制プッシュを防いだり、すべてのコミットに有効な Jira アプリケーションの課題キーが含まれているかどうかを確認したりすることができます。
既定の pre-receive フック
Bitbucket comes with some pre-receive hooks installed by default that are disabled, but can be enabled at the project level for all repositories in a project, or for individual repositories.
The default hooks that come with Bitbucket are:
- 強制プッシュの拒否 - リポジトリへのすべての強制プッシュを拒否します。
- コミット署名の検証 - 検証済みの GPG 署名のないコミットとタグを拒否します。
- コミッターの検証 - リポジトリへにプッシュしたユーザー以外によるコミットを拒否します。
Post-receive フック
Post-receive hooks run after commits are processed, and are typically used to update external services or send notifications. For example, the Web Post Hooks Plugin can send a message to a chat client or notify a continuous integration server changes.
For releases prior to 5.0, Bitbucket supported two types of post-receive hook:
- PostReceiveHooks used to map to Git's
post-receive
hooks. They ran on the Bitbucket instance after a push. - AsyncPostReceiveRepositoryHooks, was executed by the Bitbucket instance.
5.0 以降ではこれらはいずれも廃止され、以下に置き換えられました。
- PostRepositoryHooks: PR マージと post-receive の両方で呼び出されます。
プロジェクトのすべてのリポジトリ用にフックを構成
プロジェクト レベルでフックを有効化 (または無効化) すると、プロジェクト設定を継承するよう設定されたリポジトリのフックが変更されます。個別リポジトリのフックを変更したことがある場合、プロジェクト レベルでフックを設定してもそのリポジトリの設定は変更されません。
プロジェクト内のリポジトリに対してフックを有効化 (または無効化) する方法 (プロジェクト管理権限が必要):
- [プロジェクト設定] > [フック] に移動します。
- フックごとにトグルをクリックして有効化 (または無効化) します。
Hooks for repositories set to Inherited in the project will now reflect this new configuration. Hooks explicitly configured at the repository level will not be affected.
個別リポジトリ用にフックを構成
リポジトリ レベルでフックを設定すると、プロジェクト レベルで構成されたチェックはオーバーライドされます。個別リポジトリにフックを構成していない場合、プロジェクト レベルで設定されたフックが継承されます。
1 つのリポジトリにフックを有効化 (または無効化) する方法 (リポジトリ管理権限が必要):
- [リポジトリ設定] > [フック] に移動します。
- フックの右側のドロップ メニューを使用して設定します。
- Inherited - uses the configuration set at the project level.
- 有効 - フック条件を適用します。
- 無効 - フック条件を無視します。
設定すると、プロジェクト レベルでフック構成に加えられたあらゆる変更は、プロジェクト構成とは独立して変更されるため、このリポジトリでは無視されます。
継承されたフック構成
By default, Bitbucket comes with hooks disabled at the project and repository level. Unless hooks were configured at the repository level, enabling or disabling hooks at the project level inherits the configuration at the repository level.
たとえば、プロジェクトの [強制プッシュを拒否] フックを有効にし、リポジトリのフック設定は変更しない場合、各リポジトリでは [強制プッシュを拒否] フックが有効化されます。
フックが無効 (プロジェクト レベル) | フックが無効 (リポジトリ レベル) |
フックが有効 (プロジェクト レベル) | フックが有効 (リポジトリ レベル) |
特定のリポジトリでは [強制プッシュを拒否] フックが適切でないと判断したとします。プロジェクト レベルでの構成内容を問わず、個別リポジトリのフックを変更できます。プロジェクト レベルで [強制プッシュを拒否] フックに加えられた変更は、プロジェクト構成とは独立して変更されるため、このリポジトリでは無視されます。
フックが有効 (プロジェクト レベル) | フックが無効 (リポジトリ レベル) |
新しいフックの追加
追加のフックはシステム管理者がインストールでき、プロジェクト内のすべてのリポジトリに対して有効化することも、個別リポジトリに対して有効化することもできます。
Atlassian Marketplace からフックを追加する方法 (システム管理者権限が必要):
- [プロジェクト設定] > [フック] に移動します。
- [フックを追加] をクリックします。
- 追加するフックを検索し、[インストール] をクリックします。
新しいフックを追加したら、既定のフックと同じように有効化 (または無効化) できます。
フックの作成
独自のフックを作成することもできます。作成開始に役立つリソースを紹介します。