継続的インテグレーション パフォーマンスのために Bitbucket Server を拡張する

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

CI またはその他の自動ツールが変更について Bitbucket Server をポーリングするように設定されている場合、Bitbucket Server インスタンスに大きな負荷がかかる場合があります。たとえば、特定のリポジトリ用にセットアップされたビルドが多数ある CI サーバーを考えます。それぞれのビルドは、変更について Bitbucket Server をポーリングし、変更が検出されると新しいビルドを開始します。CI サーバーが並列および / または連鎖ビルド ステップをサポートしている場合、それぞれのビルドは通常、複数のクローン操作を同じリポジトリで実行します。その結果、変更に関するポーリングが多数発生し、リポジトリのクローンが激増します。

キャッシング

CI によって、Bitbucket Server への呼び出しが何度も繰り返されます。変更に関するポーリングでは通常、90 % の割合で同じレスポンスが得られ、ビルドによって Bitbucket Server に対する同一のクローン呼び出しが多数トリガーされます。CI からの反復的な負荷が発生した場合、いずれの操作もキャッシュの恩恵を大きく受けることができます。


このページの内容:

制限事項

  • キャッシュは "ref advertisement" (変更のポーリング)、クローン、およびシャロー クローン リクエストにのみ適用できます。フェッチ / プル操作はキャッシュされませんが、これらの操作は "ref advertisement" キャッシュの恩恵を受けます。
  • ref advertisement キャッシュは既定で無効化されています。プラグイン システムの開放性は、プラグイン (または手動でインストールされた git フック) が、変更を検出するキャッシュ プラグインなしでリポジトリ内の refs を更新できることを意味します。その結果、refs キャッシュが古くなり、クローン / フェッチ操作が失敗します。ただし、リポジトリを直接変更するプラグインまたは git フックがインストールされていないことがわかっている場合、以下の [設定] セクションに記載されているシステム プロパティを使用して、ref advertisement キャッシュを有効化できます。追加の予防策として、ref advertisement キャッシュは 3 分後に自動的に失効されるように設定されていることにご注意ください。

  • Git 2.18 では、Bitbucket Server のキャッシュで完全にサポートされる Git ワイヤ プロトコルのバージョン 2 が導入されました。プロトコルの差異のため、バージョン 1 のワイヤ プロトコルを使用する Git クライアントは、バージョン 2 のワイヤ プロトコルを使用するクライアント用に生成されたキャッシュを使用できない点にご注意ください。逆もまた同様です。その結果、バージョン 1 と 2 のワイヤ プロトコルを使用するクライアントが混在している場合、すべてのクライアントが同じバージョンのワイヤ プロトコルを使用している場合と比較すると、キャッシュのためのディスク使用率が高くなり、キャッシュ効率が低下する可能性があります。

考慮事項

ref advertisements 操作の場合もクローン操作の場合も、キャッシュ データはディスクに保存されます。保存期間は設定できます。大きなインスタンスはディスク全体を潜在的に消費する可能性があるため、SCM Cache Plugin は残りのディスク容量を監視し、設定された最低ディスク空き容量に達すると自動的に無効化されます。

利用可能なシステム プロパティの詳細については、「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/refs/enabled
ref advertisement キャッシュが有効化されているか (true) 無効化されているか (false) を取得します。
PUT
/rest/scm-cache/latest/config/refs/enabled/{status}

ref advertisement キャッシュを有効化 (status = true) または無効化 (status = false) します。

GET
/rest/scm-cache/latest/config/refs/ttl
ref advertisement キャッシュの有効期限を秒単位で取得します。
PUT
/rest/scm-cache/latest/config/refs/ttl/{expiryInSec}
ref advertisement キャッシュの有効期限を秒単位で設定します。
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 で識別されるリポジトリのキャッシュをクリアします。

最終更新日 2018 年 11 月 15 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.