【実務・中級編】Bitbucketのブランチ権限設定を使い倒す!ブランチタイプ別の厳格なルール策定ガイド – バージョン管理・CI/CD活用バイブル

Bitbucketを「ただのGitサーバー」で終わらせるな:ブランチ権限で構築する鉄壁のDevOpsパイプライン

多くのチームがBitbucketを単なるコードの置き場として使っている。だが、それはフェラーリで近所のコンビニに行くようなものだ。

Bitbucketの真価は、「誰が、どこに、どのような状態でコードを流し込むか」をコードベースで統制できる点にある。本稿では、リリース事故を撲滅し、開発者の認知負荷を最小化するための「ブランチ権限の極限設定」を伝授する。

—

1. ブランチ制限の設計思想:階層による「権限の非対称性」

全てのブランチに一律のルールを適用するのは悪手だ。我々は以下の3階層で権限を切り分けるべきだ。

A. プロダクション・ゲート(master/main)

  • 権限: 「書き込み」は一切禁止。管理者であっても直接プッシュさせない。
  • 必須設定:
  • Pull Request Required: 必須。
  • At least 1 approval: 必須(Seniorエンジニア以上の承認を条件にする)。
  • Successful builds: 必須。CIパイプラインがグリーンであること。
  • Reset approvals on new commits: 最重要。 コードが修正されたら承認をリセットし、再レビューを強制する。

B. ステージング・ゲート(develop)

  • 権限: 特定のCIサービスアカウントのみプッシュ可能、あるいは特定グループのみ許可。
  • 必須設定:
  • 開発者の直接プッシュを禁止し、PRベースの開発フローを強制。
  • マージ戦略を「Squash」に固定し、Gitログを綺麗に保つ。

C. フィーチャー・ゲート(feature/)

  • 権限: 開発者は自由に行き来可能。
  • 必須設定:
  • 特に制限は設けないが、`branching model`を設定し、命名規則を強制する。

—

2. 現場で震えるほど役立つ「高度なハック」

特定のパスに対する書き込み制御

Bitbucketの`Branch Permissions`と`Code Insights`を組み合わせれば、「特定のディレクトリ(例: `/infra` や `/docs`)の変更には、必ずSREチームの承認が必要」というルールを作れる。

これには `CODEOWNERS` ファイルを併用するのがベストプラクティスだ。

.bitbucket/CODEOWNERS
/infra/ @sre-team
/src/ @backend-team
/frontend/ @frontend-team

このファイルをルートに置くことで、該当ディレクトリの変更時に自動で正しいレビュアーがアサインされる。

タグ作成の「権限ロック」

タグはリリースそのものだ。誤って上書きしたり、ゴミタグを作らせないために、ワイルドカードによるタグ制限をかけること。

  • `refs/tags/` への書き込みを「管理者のみ」に限定。
  • 自動リリースツール(Semantic Release等)のサービスアカウントのみがタグを作成できるように設定する。

—

3. 生産性を劇的に向上させる「神ツール・設定」

キーボードショートカットを脳に焼き付けろ

マウスを触る回数を減らせ。これが開発スピードの源泉だ。

  • `a` : PR画面で承認(Approve)
  • `c` : コード上でコメント追加
  • `j` / `k` : ファイルリストの上下移動
  • `Shift + ?` : 全ショートカットを表示(毎日見よ)

入れるべき「神プラグイン」

  • Bitbucket Smart Commits: コミットメッセージに `JIRA-123 #comment fix typo` と書くだけで、JiraとBitbucketが勝手に連携する。これを使わない手はない。
  • Refined Bitbucket: UIを圧倒的に使いやすくするブラウザ拡張。画面の占有率を最適化し、レビュー速度が30%は向上する。

—

4. 設定のコード化:Bitbucket APIによる自動化

GUIで設定をポチポチするのは一度きりだ。チーム規模が大きくなれば、リポジトリの設定は `bitbucket-pipelines.yml` とセットでスクリプト管理すべきだ。

設定反映の自動化例 (curl):

ブランチ制限をAPIで強制適用するスクリプトの一片
curl -X POST “https://api.bitbucket.org/2.0/repositories/{workspace}/{repo}/branch-restrictions” \
-H “Authorization: Bearer $TOKEN” \
-H “Content-Type: application/json” \
-d ‘{
“kind”: “push”,
“pattern”: “master”,
“users”: [],
“groups”: [“senior-engineers”],
“access_key”: null
}’ # masterへのpushはseniorグループのみ許可

—

最後に:テックリードからの提言

ツールは「縛るため」にあるのではない。「安心して爆速で開発するため」にある。

権限を厳格にすることで、「masterを壊したらどうしよう」という不安からエンジニアを解放せよ。それが結果として、チームのデプロイ頻度を上げ、リードタイムを短縮する。

ルールは一度決めて終わりではない。四半期ごとに「この制限は我々を遅くしていないか?」と問い直すこと。それが、真に強いDevOps組織のあり方だ。

さあ、今すぐブランチ設定を見直し、コマンドラインに集中できる環境を構築せよ。

タイトルとURLをコピーしました