跳到内容

Elixir 缓存

Tuist 会在本地和 CI 构建中复用已编译的依赖。只需启用一次,然后继续使用 mix compile 和 mix test。

设置#

按照开始使用 Elixir中的指引操作一次。共享设置会在提供构建和测试洞察的同时启用依赖缓存;无需额外配置缓存。

cache: true 会自动选择受支持的 Hex 和 Git 依赖;你无需列出它们。原生/自定义编译和本地依赖仍通过 Mix 正常进行。你的应用程序源文件不会被缓存。

照常构建#

bash
mix compile
mix test

当某个依赖需要编译时,Tuist 会先检查本地缓存,再检查共享的远程缓存。如果未命中,则正常编译并将结果存储以供后续构建使用。对于 Mix 认为已是最新状态的受支持依赖,只要其编译产物存在且有效,就计为本地命中;无需查询缓存。如果身份验证不可用或缓存不可用,Mix 仍会正常编译。

查看缓存命中情况#

在项目的仪表板中打开Mix 缓存,查看命中率、传输量和最近的构建。选择某个构建的Mix 缓存标签页,查看哪些任务命中或未命中。CAS 输出显示实际的远程下载和上传;本地命中不会产生远程传输记录。复用已最新的产物会计入命中率,但不会产生传输字节、恢复延迟或预估节省时间。

要尝试恢复,请清理某个受支持依赖的编译产物并重新构建:

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 缓存配置。