#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. спасибо за это, я посмотрю и дам вам знать, если это сработает!