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

Я пытаюсь кэшировать пакеты 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, но, к сожалению, я не смог заставить его работать.

Заранее спасибо! 🙌

2 ответа

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

путь - список файлов, каталогов и шаблонов подстановочных знаков для кэширования и восстановления. См. @ 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, файлы в конечном итоге хранятся в другом месте, чем если бы вы управляли ими вручную, используя.

Этот вариант должен найти файлы (но 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.

Второй вариант не знаю почему у меня не сработал, все равно спасибо за помощь.

Я сделал последнюю попытку, и это сработало!

      - 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-
Другие вопросы по тегам