跳至內容

Elixir 快取

Tuist 會在本地及 CI 建構中重用已編譯的依賴項。只需啟用一次,然後繼續使用 mix compile 和 mix test。

設定#

請先按照 開始使用 Elixir 進行設定。此共用設定會同時啟用依賴項快取以及建構與測試洞察功能;無需額外設定快取。

cache: true 會自動選取支援的 Hex 和 Git 依賴項;你無須逐一列出。原生/自訂編譯和本地依賴項仍會照常透過 Mix 進行。你的應用程式原始碼檔案不會被快取。

照常建構#

bash
mix compile
mix test

當某個依賴項需要編譯時,Tuist 會先檢查本地快取,再檢查共用的遠端快取。若未命中(miss),則會正常編譯並將結果儲存供日後建構使用。對於 Mix 認為已是最新版本的已選取且受支援依賴項,只要其編譯輸出存在且有效,便會計為本地命中(hit);無須查詢快取。如果驗證或快取服務不可用,Mix 仍會正常編譯。

查看你的快取命中情況#

在專案儀表板中開啟 Mix Cache,以查看命中率、傳輸量和最近的建構記錄。選擇某個建構的 Mix cache 分頁,即可查看哪些任務命中或未命中。CAS Outputs 會顯示實際的遠端下載和上傳;本地命中不會產生遠端傳輸記錄。重用已是最新的輸出內容有助於提高命中率,但不會產生傳輸位元組、還原延遲或預估節省的時間。

如要測試還原,請清除某個受支援依賴項的編譯輸出,然後再次建構:

bash
mix deps.clean nimble_options --build
mix compile

將 nimble_options 替換為你專案中使用且已填入快取的依賴項。保持相同的 Mix 環境和編譯器設定。

僅在需要時自訂#

大多數專案可以保留 cache: true。如有例外情況,請使用關鍵字列表:

elixir
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。
Important

編譯過程可以執行任意的 Elixir 程式碼。請宣告額外的輸入項,並排除那些含有時間/網路依賴程式碼或副作用、必須在每次建構時執行的依賴項。快取構件可能包含機密資料,而快取寫入者是受信任的程式碼產生者:切勿將快取寫入憑證授予不受信任的工作。

如需了解依賴項選擇、在不同檢出路徑間重用、疑難排解和實作細節,請參閱 進階 Elixir 快取設定。