継続的インテグレーション パフォーマンスのために Bitbucket Server を拡張する
CI またはその他の自動ツールが変更について Bitbucket Server をポーリングするように設定されている場合、Bitbucket Server インスタンスに大きな負荷がかかる場合があります。たとえば、特定のリポジトリ用にセットアップされたビルドが多数ある CI サーバーを考えます。それぞれのビルドは、変更について Bitbucket Server をポーリングし、変更が検出されると新しいビルドを開始します。CI サーバーが並列および / または連鎖ビルド ステップをサポートしている場合、それぞれのビルドは通常、複数のクローン操作を同じリポジトリで実行します。その結果、変更に関するポーリングが多数発生し、リポジトリのクローンが激増します。
キャッシング
CI によって、Bitbucket Server への呼び出しが何度も繰り返されます。変更に関するポーリングでは通常、90 % の割合で同じレスポンスが得られ、ビルドによって Bitbucket Server に対する同一のクローン呼び出しが多数トリガーされます。CI からの反復的な負荷が発生した場合、いずれの操作もキャッシュの恩恵を大きく受けることができます。
On this page:
制限事項
- Git 2.18 では、Bitbucket Server のキャッシュで完全にサポートされる Git ワイヤ プロトコルのバージョン 2 が導入されました。プロトコルの差異のため、バージョン 1 のワイヤ プロトコルを使用する Git クライアントは、バージョン 2 のワイヤ プロトコルを使用するクライアント用に生成されたキャッシュを使用できない点にご注意ください。逆もまた同様です。その結果、バージョン 1 と 2 のワイヤ プロトコルを使用するクライアントが混在している場合、すべてのクライアントが同じバージョンのワイヤ プロトコルを使用している場合と比較すると、キャッシュのためのディスク使用率が高くなり、キャッシュ効率が低下する可能性があります。
考慮事項
Cache data is stored on disk for clone operations for a configurable period of time. Since large instances can potentially consume an entire disk the SCM Cache Plugin monitors remaining disk space and is automatically disabled when the configured minimum free disk space is reached.
利用可能なシステム プロパティの詳細については、「Bitbucket Server の設定プロパティ」を参照してください。
構成
REST エンドポイント (すべてではなく一部の設定) または <BITBUCKET_HOME>/bitbucket.properties
でシステム プロパティを使用して、Bitbucket Server の SCM Cache Plugin を設定できます。REST で構成された設定は、 bitbucket.properties
での設定より手前のものとみなされます。
REST API
メソッド | URL | 説明 |
---|---|---|
GET | /rest/scm-cache/latest/config/protocols | キャッシュが有効化されているプロトコルを取得します。 |
PUT | /rest/scm-cache/latest/config/protocols/{protocol} | プロトコル (HTTP または SSH) のホスティング リクエストのキャッシングを有効化します。 |
削除 | /rest/scm-cache/latest/config/protocols/{protocol} | プロトコル (HTTP または SSH) のホスティング リクエストのキャッシングを無効化します。 |
GET | /rest/scm-cache/latest/config/upload-pack/enabled | クローン キャッシュが有効化されているか (true) 無効化されているか (false) を取得します。 |
PUT | /rest/scm-cache/latest/config/upload-pack/enabled/{status} | クローン キャッシュを有効化 (status = true) または無効化 (status = false) します。 |
GET | /rest/scm-cache/latest/config/upload-pack/ttl | クローン キャッシュの有効期限を秒単位で取得します。 |
PUT | /rest/scm-cache/latest/config/upload-pack/ttl/{expiryInSec} | クローン キャッシュの有効期限を秒単位で設定します。 |
GET | /rest/scm-cache/latest/caches | 現在のキャッシュに関する情報 (サイズ、キャッシュのヒット数、ミス数など) を取得します。 |
削除 | /rest/scm-cache/latest/caches | すべてのキャッシュをクリアします。 |
GET | /rest/scm-cache/latest/caches/{projectKey}/{repoSlug} | projectKey および repoSlug で識別されるリポジトリのキャッシュに関する情報 (サイズ、キャッシュのヒット数、ミス数など) を取得します。 |
削除 | /rest/scm-cache/latest/caches/{projectKey}/{repoSlug} | projectKey および repoSlug で識別されるリポジトリのキャッシュをクリアします。 |