簡體   English   中英

SPM 緩存不適用於 github 操作,有什么想法嗎?

[英]SPM cache not working on github actions, any ideas?

我正在嘗試使用緩存操作在 GitHub Actions 上緩存 SPM 包,我正在遵循以下示例:

  - uses: actions/cache@v2
  with:
    path: Myproject.xcworkspace/xcshareddata/swiftpm/Package.resolved
    key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
    restore-keys: |
      ${{ runner.os }}-spm-

當您使用 Xcode 添加 SPM 包時,我覺得不可能使用緩存

是否有人成功地將緩存添加到您的項目中,甚至通過 Xcode 管理 SPM? 或者我的 .yml 文件可能有問題,但不幸的是我無法讓它工作。

您使用的path參數不正確。

path - 要緩存和恢復的文件、目錄和通配符模式的列表。 有關支持的模式,請參閱@actions/glob

它應該指向您希望緩存的任何文件/文件夾,而不是設置解析文件的path

actions/cache的文檔實際上顯示了如何將它用於 SPM:

- uses: actions/cache@v2
  with:
    path: .build
    key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
    restore-keys: |
      ${{ runner.os }}-spm-

由於您讓 Xcode 管理 Swift 包,因此文件最終存儲在與使用swift package手動管理它們不同的位置。

這種變體應該可以找到文件(但 Xcode 可以隨時更改存儲它們的位置):

- uses: actions/cache@v2
  with:
    path: /Users/runner/Library/Developer/Xcode/DerivedData/**/SourcePackages/checkouts 
    key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
    restore-keys: |
      ${{ runner.os }}-spm-

由於您使用的是 CI + SPM,我建議您停止通過 Xcode 管理 SPM,而是手動使用swift package 這將允許您為 SPM 包提供更可預測的位置 ( .build )。

第二個變體不知道為什么它對我不起作用,無論如何感謝您的幫助🙌。

我給了它最后一槍,這成功了!

- uses: actions/cache@v3
        name: "Cache: SPM"
        with:
          path: ~/Library/Developer/Xcode/DerivedData/AppName*/SourcePackages/
          key: ${{ runner.os }}-spm-${{ hashFiles('AppName.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
          restore-keys: |
            ${{ runner.os }}-spm-

暫無
暫無

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

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