В мое программное обеспечение входит сторонняя библиотека, которая редко меняется и ее сборка занимает 8 минут, поэтому я решил, что могу ускорить конвейер, кэшируя выходные данные сборки. У меня есть следующее действие кэша рабочего процесса GitHub:
- name: Cache third-party libraries
id: cache-libs
uses: actions/cache@v3
with:
path: Path\to\libs
key: "test-key"
В первой сборке на этапе «Кэшировать сторонние библиотеки» не удается найти кеш, как и ожидалось:
Run actions/cache@v3
Cache not found for input keys: test-key
После сборки я вижу, что кеш создается на этапе «Post Cache сторонних библиотек»:
6s
Post job cleanup.
"C:\Program Files\Git\usr\bin\tar.exe" --posix -cf cache.tzst --exclude cache.tzst -P -C C:/GitHub/RUNNER-1/_work/project/project --files-from manifest.txt --force-local --use-compress-program "zstd -T0"
Cache Size: ~13 MB (13645556 B)
Cache saved successfully
Cache saved with key: test-key
Я вижу запись кэша, когда посещаю my_repo/actions/caches
.
Однако когда я перезапускаю рабочий процесс, восстановление кеша не удается:
Run actions/cache@v3
Warning: Failed to restore: Content-Length not found on blob response
Cache not found for input keys: test-key
Что именно означает эта ошибка и есть ли способ ее исправить?
Обновлено: я также пытался запустить действие сохранения непосредственно после сборки (как описано здесь), но поведение такое же: шаг сохранения работает, но при повторном запуске выборка кеша завершается с ошибкой «Content- Длина не найдена в сообщении ответа на большой двоичный объект.
Причина «Длина контента не найдена в ответе на большой двоичный объект» заключается в том, что на нашем корпоративном сервере GitHub отключены кеши, как я только что узнал. Смущает то, что ошибка появляется только при восстановлении кеша, а теперь и при его создании.
На данный момент я просто установил ccache
вместе с компилятором, что помогает ускорить повторяющиеся сборки одних и тех же исходных файлов.