作曲家缓存不适用于 bitbucket 管道构建

我在我的 bitbucket 管道中得到了这个:


pipelines:

  branches:

    develop:

    - step:

        caches:

          - composer

        name: unit tests - Delivery 

        image: totersapp/laravel-docker:phpredis

        script:

        - echo "memory_limit=512M" > /usr/local/etc/php/conf.d/memory-limit-php.ini

        - ln -f -s .env.pipelines .env

        - composer install 

        services:

        - postgres

        - redis

每次运行它都会下载相同的文件(即使是第二次运行)..任何想法为什么?


这是作曲家安装的日志:


+ composer install

Loading composer repositories with package information

Installing dependencies (including require-dev) from lock file

Package operations: 199 installs, 0 updates, 0 removals

  - Installing kylekatarnls/update-helper (1.2.0): Downloading (connecting...)Downloading (0%)           Downloading (100%)

  - Installing ocramius/package-versions (1.4.2): Downloading (connecting...)Downloading (0%)           Downloading (30%)Downloading (35%)Downloading (65%)Downloading (95%)Downloading (100%)

  - Installing symfony/polyfill-ctype (v1.13.1): Downloading (connecting...)Downloading (0%)           Downloading (100%)

更新:无法覆盖默认值

基于这个答案,我尝试了这个:


- step:

    caches:

      - composer

    image: totersapp/laravel-docker:phpredis

    script:

    - composer install 

..

definitions:

caches:

  composer: /composer/cache

我的问题是我正在尝试使用自定义缓存目录(在本例中/composer/cache为在这个例子中,bitbucket 教程是用 bundle 做的:


 - bundle install --path vendor/bundle

换句话说,我不能运行这样的东西:


- composer install --cache-directory /composer/cache


ibeautiful
浏览 99回答 2
2回答

手掌心

根据Bitbucket 论坛上的一个问题,如果您使用的 docker 映像将下载的文件放在不寻常的位置,就会发生这种情况。根据有关缓存的文档,通常缓存的目录是~/.composer/cache,而图像的 docker 文件使用/composer.请尝试使用以下配置。它包含一个自定义缓存(需要自定义名称!),将自定义的 composer 文件夹放入缓存中:pipelines:  branches:    develop:    - step:        caches:          - composer-customdefinitions:  caches:    composer-custom: /composer/cache正如您在https://bitbucket.org/haasenico/composer-cache/addon/pipelines/home#!/results/4上看到的那样,使用了缓存并且似乎适用于我的简短示例

繁华开满天机

为了完成这项工作,我基本上遵循了 Nico Haase 的回答,但我还必须执行以下操作:"cache-dir": "~/.cache/composer"从我的 composer.json中删除确保保存的缓存文件与 composer.json 中发生的任何事情同步。您不能要求 composer.json 从具有不相关内容的缓存文件中加载依赖项。为此,我只是删除了所有缓存文件并重新开始,这次成功了!
打开App,查看更多内容
随时随地看视频慕课网APP