Расширения PHP для кэширования, установленные с Pecl на CircleCI

Мы используем CircleCI в качестве сервера сборки для приложения php symfony, и нам требуется библиотека mongodb с composer, которая зависит от расширения mongodb, которую мы устанавливаем с помощью pecl. Итак, у нас есть следующие шаги в нашей сборке:

- run: sudo pecl install mongodb
- run: echo -e "extension=mongodb.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null
- run: cd app && composer install --no-interaction

Это работает нормально, но расширение PECL mongo db занимает половину нашего времени сборки.

Есть ли способ сохранить установленные расширения PECL в кеш CircleCI?

Я пробовал следующее:

- save_cache:
key: pecl-v1-{{ checksum "scripts/pecl-extensions.sh" }}
paths:
- /usr/local/20160303/mongodb.so

Но это не работает — mongodb снова загружается PECL. Какие каталоги я должен попытаться кэшировать в этом случае?

1

Решение

Отвечая на мой собственный вопрос. Существует способ кеширования расширений PHP, установленных с помощью PECL. Нужно знать, где именно установлены расширения pecl (pecl config-show). Похоже, что в контейнерах Circle CI это местоположение:

/ USR / местные / Библиотека / PHP / удлинители / не-отладочные-не-ЗТС-20160303 /

Расширения могут быть скопированы из этой папки во временный каталог, который можно кэшировать и восстанавливать. Восстановленные файлы могут быть скопированы обратно с помощью sudo.

  - run: pecl config-show
- run: mkdir pecl-cache
- restore_cache:
keys:
- pecl-v1-{{ checksum "scripts/pecl-extensions.sh" }}
- pecl-v1-

- run:
name: Copying restored pecl extensions cache into extensions directory
command: sudo cp -R pecl-cache/. /usr/local/lib/php/extensions/no-debug-non-zts-20160303/

- run:
name: Install mongodb pecl extensions if mongodb.so is not there
command: >
if [ ! -f /usr/local/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so ]; then
sudo pecl install mongodb ;
fi

- run:
name: Copying pecl extensions to temp directory which will be cached
command: sudo cp -R /usr/local/lib/php/extensions/no-debug-non-zts-20160303/* pecl-cache/

- save_cache:
key: pecl-v1-{{ checksum "scripts/pecl-extensions.sh" }}
paths:
- pecl-cachedocker-php-ext-install
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]