簡體   English   中英

如何在 Azure 構建管道中有效地緩存貨物/Rust 項目

[英]How to effectively cache cargo/Rust projects in an Azure Build Pipeline

我有一組 Azure Build Pipelines 編譯 rust 項目,目前使用 blob 存儲來存儲.cargotarget文件夾作為緩存。

在本地編譯時,第一次編譯二進制文件后,后續cargo build不會再次編譯依賴庫/ crates,只是本地二進制文件,但是使用我當前的管道系統,在下載緩存並使用正確的目標后要構建的文件夾,管道仍會下載並構建板條箱。

這是我用於緩存和任何管道構建的 config.toml。

[build]
target-dir = "./target"
dep-info-basedir = "."
incremental = true

在某些情況下,它減少了編譯時間,但沒有我預期的那么多。 我可以緩存更多文件夾以提高速度嗎? 是否有貨物正在檢查和污染緩存的緩存標識符?

管道運行自定義 xtask 二進制文件,該二進制文件執行許多任務,包括運行cargo build --release這會導致問題嗎?

您需要緩存target~/.cargo/registry ,正如 Caesar 在上面的評論中提到的那樣。

以下對我有用( 文檔):

- task: Cache@2
  inputs:
    key: '"cargo" | "$(Agent.OS)" | Cargo.lock'
    path: $(Build.SourcesDirectory)\target
  displayName: cache cargo build

- task: Cache@2
  inputs:
    key: '"cargo-registry" | "$(Agent.OS)" | Cargo.lock'
    path: $(UserProfile)\.cargo\registry
  displayName: cache cargo registry

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM