Кэш SPM не работает с действиями на github, есть идеи?

#swift #github #github-actions #swift-package-manager

Вопрос:

Я пытаюсь кэшировать пакеты SPM в действиях GitHub с помощью действия кэширования, я следую этому примеру:

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

Я чувствую, что невозможно использовать кэш, когда вы добавляете свои пакеты SPM с помощью Xcode

Кому-нибудь удалось добавить кэш в ваш проект, даже управляя SPM с помощью Xcode? Или, может быть, что-то не так в моем файле .yml, но, к сожалению, я не смог заставить его работать.

Ответ №1:

Вы неправильно используете этот path параметр.

путь — список файлов, каталогов и шаблонов подстановочных знаков для кэширования и восстановления. Поддерживаемые шаблоны см. в разделе @действия/глобус.

Вместо установки 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, я бы рекомендовал вам прекратить управление SPM с помощью Xcode и вместо этого использовать вручную swift package . Это позволит вам иметь более предсказуемое местоположение ( .build ) для пакетов SPM.

Комментарии:

1. спасибо за это, я посмотрю и дам вам знать, если это сработает!