Bitbucket Data Center インスタンスをクリーンアップする
Server ライセンスのサポートは 2024 年 2 月 15 日をもって終了しました。代わりの選択肢についてはこちらをご確認ください。
このガイドの目的は、Bitbucket インスタンス整理する方法を説明することです。
すべての状況に対応できる万能のアプローチはありません。そのため、このページでは、インスタンスのクリーンアップに使用できるさまざまなテクニックを紹介します。これはチームワークであることは間違いなく、組織内の人の助けを得る必要があります。ビジネス ルールの決定と適切な担当者の関与の詳細については、「クリーンアップを準備する」を参照してください。
始める前にデータをバックアップすることをお勧めします。バックアップの作成方法を参照してください。また、本番環境に適用する前に、まずテスト環境で変更を実行することをお勧めします。
非アクティブなユーザーを削除する
誰かが組織を離れた場合は、ユーザー アカウントを削除することをお勧めします。これによって、インスタンスのセキュリティを維持し、プル リクエストを誤って非アクティブ ユーザーに割り当てるのを防ぎ、当然のことながらライセンス キャパシティも確保できます。
非アクティブなユーザーを検索および削除するには、次の 3 つの方法があります。
ユーザーのリストで最後のログイン日時を表示するには、[管理者] > [ユーザー] を参照してください。そのページの結果から、ユーザーを削除できます。
Atlassian Crowd をご利用の場合、集中型ライセンスの可視性アプリでライセンスの使用状況を監視することもできます。詳細は「ライセンス使用状況の監視」をご覧ください。
また、REST API または SQL でユーザーの最後のログイン日時の詳細については、こちらの記事を参照してください。
ユーザーの削除を自動化するにはどうすればよいですか?
REST API を使用してユーザーを削除できます。以下に例を示します。
curl -u USERNAME:PASSWORD -v -X DELETE 'http://localhost:7990/bitbucket/rest/api/latest/admin/users?name={USER_SLUG}'
Marketplace アプリ
Bitbucket のユーザー管理は、設定可能な条件があるユーザーを特定し、アクションを自動的に実行するスケジュールを設定する上で役立ちます。
Bitbucket のユーザー非アクティブ化は、ユーザー ディレクトリから非アクティブなユーザーを排除する上で役立ちます。
マージされたブランチを削除する
時間が経つにつれ、インスタンスがマージされたブランチで煩雑になり、それは安全に削除できます。
Bitbucket の [ブランチ] ページでは、ブランチをフィルタリングし、そのステータスを確認して、一度に 1 つずつブランチを削除することができます。詳細については、「Bitbucket Server でブランチを使用する」を参照してください。
ブランチの削除を自動化するにはどうすればよいですか?
Git コマンド ラインを使用してマージされたすべてのブランチを削除できます。たとえば、すでにメイン ブランチにマージされたすべてのブランチを削除するには、次の手順を実行します。
#Ensure that refs are up to date, and that stale local refs are pruned.
git fetch -p
#Dry run to list branches which will be deleted on the remote.
#This assumes that the remote is named 'origin'.
#Note that branches can be excluded from deletion by adding them after
#the 'main' branch exclusion, e.g. "grep -v 'main' | grep -v 'branch-to-keep'"
git branch --remote --merged origin/main | grep -v 'main' | sed 's/origin\///'
#Delete the branches on the origin. This process can take a long time to run
#and will use up SCM resources on Bitbucket. It's recommended to run it during
#downtime, and possibly in batches.
git branch --remote --merged origin/master | grep -v 'main' | sed 's/origin\///' | xargs git push --delete origin
Marketplace アプリ
My Branches for Bitbucket によって、あなたのブランチの寄与水準を判定し、それらをリスト化し、古いブランチを簡単に削除できます。
Mass Delete branches from Bitbucket は、一括削除オプションをブランチ ページに追加するため、複数のブランチを選択し、すべて同時に削除できます。
非アクティブなリポジトリを削除する
この機能は、Bitbucket Data Center ライセンスを持っている場合にのみ利用できます。
Bitbucket Data Center インスタンスでは、定期的なリポジトリのクリーンアップが必要になる可能性が高くなります。リポジトリ ページでは、混乱の原因となっている非アクティブなリポジトリを簡単に見つけてクリーンアップできます。
リポジトリを一度に 1 つずつ確認して削除するという繰り返しのタスクを避けるために、高度なリポジトリ管理ドキュメントをご参照ください。
古い Git タグを削除する
リポジトリ内に多数のタグがあると、そのサイズが大きくなり、クローン操作やフェッチ操作の実行時間が長くなる可能性があります。
特定のコミットに関連付けられているすべてのタグを表示するには、[コミット] ページでそのコミットに移動します。リポジトリへの書き込みアクセス権がある場合は、タグを削除できます。
タグの削除を自動化するにはどうすればよいですか?
パターンを含むタグを除く、リモート上のすべてのタグを削除できます。次に例を示します。
#Dry run to list tags which will be deleted on the remote.
#Note that tags can be excluded from deletion by adding them after as
#inverted grep matches, e.g. "grep -v 'release' | grep -v 'tag-to-keep'".
git ls-remote --tags | grep -v '\^{}$' | grep -v 'release' | cut -f2 -d$'\t' | xargs -n 1
#Delete the tags on the origin. This process can take a long time to run
#and will use up SCM resources on Bitbucket. It's recommended to run it during
#downtime, and possibly in batches.
git ls-remote --tags | grep -v '\^{}$' | grep -v 'release' | cut -f2 -d$'\t' | xargs -I % git push origin :%
非アクティブなプル リクエストを自動的に却下
この機能は、Bitbucket Data Center ライセンスを持っている場合にのみ利用できます。
リスト内のオープンなプル リクエストの数が増えると、不要な混乱が生じます。プル リクエストの自動却下オプションを使うと、非アクティブなプル リクエストを自動で却下することで、生産性を向上させて Bitbucket Data Center インスタンスのパフォーマンスを最適化できます。このオプションはデフォルトで有効化されていて、個々のリポジトリまたはプロジェクト内にあるすべてに対して設定されます。
この機能の使用方法の詳細については「プル リクエストの自動却下」をご確認ください。