【问题标题】:Cache PHP extensions installed with Pecl on CircleCI在 CircleCI 上缓存与 Pecl 一起安装的 PHP 扩展
【发布时间】:2018-05-22 09:24:19
【问题描述】:

我们使用 CircleCI 作为 php symfony 应用程序的构建服务器,我们需要带有 composer 的 mongodb 库,它依赖于 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

但这不起作用 - PECL 再次下载了 mongodb。在这种情况下,我应该尝试缓存哪些目录?

【问题讨论】:

    标签: php pecl circleci-2.0


    【解决方案1】:

    回答我自己的问题。有一种方法可以缓存使用 PECL 安装的 PHP 扩展。需要知道 pecl 扩展的确切安装位置 (pecl config-show)。在 Circle CI 容器上,这个位置似乎是:

    /usr/local/lib/php/extensions/no-debug-non-zts-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
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2010-10-08
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      相关资源
      最近更新 更多