GitHub

キャッシュについて

キャッシュは全てのキャッシュされたディレクトリや依存性をtarし、Amazon S3内に安全に保存します。

ビルドキャッシュが自動削除されるのはいつですか?

ビルドキャッシュは特定のブランチとの関連性があり、そのブランチ上で新しいビルドが行われなかった場合、7日後に有効期限が切れます(自動削除されます)。これはもしその特定のブランチで毎日(週一回以上のペースで)ビルドを行えば有効期限が切れる(自動削除される)ことはありません。7日以上特定のブランチでビルドを開始しなかった場合、関連したキャッシュは削除され、そのブランチにキャッシュがなければ、次のビルドは初期状態で走ることになります。

セットアップ

Bitriseのキャッシュステップ

開始するには、まずワークフローに以下の2つのステップを追加してください。

キャッシュを使用する直前にBitrise.io Cache:Pull(ダウンロード)ステップを追加してください。例えば、iOSアプリの場合、Git Clone Repositoryと依存性インストーラーステップ(Run CocoaPods installCarthageステップなど)の間にBitrise.io Cache:Pullを挿入します。Git Clone RepositoryステップのBitrise.io Cache:Pushステップの配置は行わないでください。

Bitrise.io Cache:Pushステップはワークフローの中でも一番最後のステップになります。

Bitriseのbuild-cache discussページにてビルドキャッシュの設定例やガイドを確認することができます。

ファイル・依存性の無視

Ignore Paths from change check欄にて無視したいキャッシュの項目へパスをセットすることができます。

パス要素(パスの一部分、フルディレクトリを除く)を無視するには、以下の要素を確認してください:

パスの無視に関するTips

無効なキャッシュ項目と結果が出たパスについては、パスの無視は行なえません。例えば、キャッシュされるパスをa/path/to/cacheと指定する場合、a/path/toの無視は行えませんが、全てのファイルを無視し変更のチェックを行わないので、a/path/to/cacheにフィンガープリントが生成されることはありません。

しかし、キャッシュパス内部でのパスの無視は行なえます。例えば、a/path/to/cacheがあなたのパスであれば、ファイル内部にあるのがa/path/to/cacheだけでない限り、a/path/to/cache/.ignore-meを無視することができます。

キャッシュのダウンロードと削除

アプリのSettingsタブ、Manage Build Cachesセクションにあるキャッシュを生成したブランチ毎に、キャッシュのダウンロードと削除が行なえます。

単一ブランチのキャッシュの削除

単一ブランチに関連性があるキャッシュの削除のみを行う場合、デフォルトブランチのキャッシュも削除しなければなりません!詳細については、If a build runs on a branch which doesn’t have a cache yet, it’ll get the main/default Branch’s cache をご覧ください。

キャッシュのサイズやポップアップウィンドウで使用されたキャッシュが最後に使用された時間を確認することができます。

テクニカルノート

ビルドキャッシュ機能

ビルドキャッシュ機能は、Build Cache APIStepsの2つに分けることができます。

Build Cache APIはシンプルなAPIであり、一つの役割を果たします:APIからURLのダウンロードやアップロードをリクエストすることができます。またこれは、リソース(ビルドキャッシュアーカイブ)への必要なアクセス権があることを確実にします。しかし、このAPIの唯一の役割は、安全で・時間制限があり・失効するURLのダウンロード・アップロードを提供することです。ファイルの処理は行われません。

Stepsは”魔法”がかかる場所でもあります。キャッシュの比較(関連した変更がある場合)やキャッシュアーカイブの作成の全てのロジックがステップによって行われます。また、これは自分自身でステップを書いたり、自分でロジックの比較や圧縮を実行する事ができるという意味でもあります。ビルドキャッシュAPIを使ってURLのダウンロード・アップロードを行うためだけのステップなので、キャッシュファイルフォーマットやその内容に関する制限はありません。

手軽なtips

キャッシュの利用可・利用不可

もしキャッシュが接続されなければ、正しい手順で失敗しないコード作成をしてください。

インターネットでダウンロードが行われるキャッシュ

これはCDN/cloudストレージからダウンロードされたファイルを保存している場合、スピードの向上は見られません。それは、キャッシュをBitriseビルドキャッシュストレージからダウンロードするのは、標準的なCDN/cloudストレージ場所からダウンロードするのとほぼ同じくらいの時間がかかるからです。

どのタイミングでBitriseビルドキャッシュ内の依存関係を保存するべきですか?

Bitriseビルドキャッシュ内で依存関係を保存することは、リソース・依存関係の標準的なダウンロード場所で信頼性に関する問題がある場合に役に立ちます。PhantomJSのような人気のあるツール・依存関係においてはレート制限される可能性もあります。CDNサーバーでは、jCenterやBintrayのような利用状況の問題に直面する可能性もあります。例 #1, #2, #3をご覧ください。これらのケースの場合、Bitriseビルドキャッシュに依存関係を保存することは役に立ちます。ビルド時間の向上は見られないかもしれませんが、信頼度については必ず向上します

アーカイブファイルとして保存されているキャッシュ

キャッシュしたい複数のパスをお持ちで、パスのどれかがアップデートされていると、キャッシュを行う全てのパスを含む、全てのキャッシュアーカイブをアップデートします

キャッシュがまだないブランチでビルドを実行する場合、メインもしくはデフォルトのブランチのキャッシュを入手します

デフォルトではないブランチでのビルドは、スピードを上げるため、新ブランチで成功したブランチが見つかるまでprimaryブランチのキャッシュに接続(読み取り専用)します。一旦新ブランチ上でのビルドがキャッシュをプッシュしたら、そのブランチ上での新しいビルドがブランチのキャッシュを入手します。キャッシュはブランチ毎で別々に保存され利用可能になります。

アプリのSettingsタブをクリックすればどれが自身のデフォルトブランチであるか確認することができます。

コードプッシュによってビルドが開始された場合、キャッシュはプッシュブランチ上で利用可能になり、その同じプッシュブランチからキャッシュがプルされます。プルリクエスト(PR)を開始する場合、そのPRソースブランチのキャッシュはプルされ、同じソースブランチへプッシュされます。タグイベントの場合、コード変更はないので、キャッシュする必要はありません。