Кеш 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-