Bitbucketの「肥大化」を殺せ:ストレージ最適化とCI/CDパイプラインの深淵なるメンテナンス術
「Bitbucketのストレージ上限に達しました」
この警告ほど、開発スピードを鈍らせ、エンジニアのメンタルを削るものはない。Git LFS(Large File Storage)が溜め込む不要なバイナリ、CI/CDパイプラインが吐き出し続ける無価値なアーティファクト。これらは単なる「ストレージの無駄」ではなく、「クローン時間の増大」という形で、開発者の生産性を毎日少しずつ殺している癌だ。
今日は、Bitbucketを限界まで使い倒し、開発チームのデリバリー速度を最大化するための「現場レベルの最適化戦略」を叩き込む。
—
1. 敵を知る:ストレージを圧迫する二大元凶
Bitbucketのストレージプランを圧迫するのは、主に以下の2つだ。
1. Git LFSの「ゾンビオブジェクト」: 過去のブランチや削除されたコミットに含まれる巨大バイナリ。
2. パイプラインのアーティファクト: 一時的なビルド成果物(`.zip`や`node_modules`等)が、デフォルト設定のまま放置されている状態。
【戦略1】Git LFSのクリーンアップ術
Git LFSは一度プッシュされると、たとえブランチを削除してもサーバー側には残り続ける。これを掃除するには `git-lfs` コマンドで適切にpruneし、再プッシュする必要がある。
ローカルのLFSキャッシュを整理
git lfs prune –verify-remote
過去のコミット履歴からLFSファイルを完全に抹消したい場合(要注意)
BFG Repo-Cleanerを使うのが最も安全で高速だ
java -jar bfg.jar –strip-blobs-bigger-than 50M .
プロの助言: BFG Repo-Cleanerは破壊的な操作だ。実行前に必ずバックアップを取り、チーム全員に「強制プル(rebase)」を強いる覚悟を持って行え。
—
2. パイプライン最適化:ゴミを溜めない設定術
`bitbucket-pipelines.yml` でアーティファクトを保持しすぎていないか? 全てのビルド成果物を保存する必要はない。
ベストプラクティス:アーティファクトの最小化
`artifacts` セクションは、後続ステップで必要なものだけを指定せよ。
bitbucket-pipelines.yml
pipelines:
default:
- step:
name: Build and Test
script:
- npm install
- npm run build
artifacts:
# 不要なディレクトリを生成しないよう、必要なパスのみを明示
- dist/
- build-metadata.json
# キャッシュを活用してnpm installの時間を極限まで削る
caches:
- node
【隠れた神設定】パイプラインの自動削除
Bitbucketのプロジェクト設定にある「Deployment」や「Artifacts」の保持期間をデフォルトの90日から「14日」に短縮せよ。そもそも14日前のアーティファクトを必要とする状況は、設計自体に欠陥がある。
—
3. 開発スピードを劇的に上げる「現場のハック」
必須プラグイン:Bitbucket Cloud/Server用
- Bitbucket Client (CLI): ブラウザをポチポチする時代は終わった。CLIでプルリクエストの作成・マージを完結させろ。
- Refined GitHub / Bitbucket UI拡張: ブラウザ上のUIを軽量化し、DOM操作を最小限にする。コードレビューの視認性が飛躍的に向上する。
チーム開発の「暗黙の了解」
1. コミットメッセージの標準化: `husky` や `commitlint` を導入し、CI側で「Conventional Commits」に違反したコミットを門前払いしろ。これにより、将来的なストレージ解析やタグ打ちが劇的に楽になる。
2. `.gitignore` の聖域化: 全リポジトリで共通の `global-gitignore` を策定し、OS特有のゴミファイル(`.DS_Store`等)を絶対に入れないルールを徹底せよ。
—
4. 最後に:エンジニアが守るべき「Git Hygiene(衛生管理)」
ストレージ最適化の真の目的は、Bitbucketの容量を節約することではない。「クリーンなリポジトリ状態を維持し、CIの待ち時間を減らすこと」だ。
- 100MBを超えるファイルはコミットするな: Gitは巨大なバイナリ管理には向いていない。S3やArtifactoryに逃がす設計を検討せよ。
- パイプラインは「使い捨て」: 毎回クリーンな環境からビルドし、キャッシュを効率的に再利用する。これが現代のDevOpsの鉄則だ。
この設定をチームに浸透させれば、あなたのプロジェクトは「重い・遅い」という呪縛から解放される。ツールに使われるな。ツールを支配し、最速で価値を届けろ。それが伝説的なエンジニアの流儀だ。
—
何か特定のプロジェクトでパイプラインがボトルネックになって困っているなら、具体的な設定ファイルを提示してくれ。その場でボトルネックを特定し、最適解を提示してやる。