Elixirキャッシュ
Tuistは、コンパイル済みの依存関係をローカルおよびCIビルド間で再利用します。一度有効にするだけで、mix compileとmix testを引き続き使用できます。
セットアップ#
Elixirプロジェクトを始めるの手順を一度実施してください。共通のセットアップにより、ビルドおよびテストのインサイト alongside 依存関係のキャッシングが有効になり、追加のキャッシュ設定は不要です。
cache: trueはサポートされているHexおよびGit依存関係を自動的に選択するため、それらをリスト化する必要はありません。ネイティブ/カスタムコンパイルおよびローカル依存関係は、通常通りMixを通じて処理されます。アプリケーションのソースファイルはキャッシュされません。
通常通りビルド#
mix compile
mix test
依存関係のコンパイルが必要な場合、Tuistはまずローカルキャッシュを確認し、次に共有リモートキャッシュを確認します。キャッシュミスが発生した場合は通常通りコンパイルを行い、その結果を将来のビルドのために保存します。Mixによって最新と判断された選択済み・サポート対象の依存関係は、コンパイル済み出力が存在し有効であればローカルヒットとしてカウントされ、キャッシュルックアップは不要です。認証またはキャッシュが利用できない場合でも、Mixは通常通りコンパイルを行います。
キャッシュヒットを確認#
プロジェクトのダッシュボードでMixキャッシュを開き、ヒット率、転送量、最近のビルドを確認してください。ビルドのMixキャッシュタブを選択して、どのタスクがヒットまたはミスしたかを確認できます。CAS出力には実際のリモートダウンロードとアップロードが表示されます。ローカルヒットではリモート転送レコードは作成されません。すでに最新の出力を再利用することはヒット率に貢献しますが、転送バイト数、復元レイテンシ、または推定節約時間には影響しません。
復元を試すには、サポートされている依存関係のコンパイル済み出力をクリーンにして、再度ビルドしてください:
mix deps.clean nimble_options --build
mix compile
nimble_optionsを、プロジェクトで使用しておりすでにキャッシュに登録されている依存関係に置き換えてください。Mix環境およびコンパイラ設定は同じまま維持してください。
必要な場合のみカスタマイズ#
ほとんどのプロジェクトではcache: trueをそのまま維持できます。例外がある場合はキーワードリストを使用してください:
tuist: [
project: "your-account/your-project",
cache: [exclude: [:a_dependency_with_compile_time_side_effects]]
]
- 追加のコンパイル時入力: 外部ファイルを
inputs: ["schemas"]で宣言し、環境変数をenv: ["COMPILER_OPTION"]で宣言します。 - ローカルのみ:
remote: falseを設定します。 - リモートアップロードなし:
upload: falseを設定します。サーバー権限は引き続きアクセスを制御します。 - キャッシングを無効化:
cache: falseを設定します。
コンパイルでは任意のElixirコードが実行される可能性があります。追加の入力を宣言し、時間やネットワークに依存するコードや副作用を持つため毎回ビルド時に実行する必要がある依存関係を除外してください。キャッシュされたアーティファクトには機密情報が含まれる可能性があり、キャッシュ書き込み者は信頼されたコード生成者として扱われます。信頼できないジョブにはキャッシュ書き込み用の認証情報を与えないでください。
依存関係の選択、異なるチェックアウトパス間での再利用、トラブルシューティング、および実装の詳細については、高度なElixirキャッシュ設定を参照してください。