Composer 缓存不适用于 bitbucket 管道构建

2024-03-09

我在我的 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安装的日志:

+ 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%)

更新:无法覆盖默认值

基于这个答案 https://stackoverflow.com/a/59542186/766570我试过这个:

- step:
    caches:
      - composer
    image: totersapp/laravel-docker:phpredis
    script:
    - composer install 
..
definitions:
caches:
  composer: /composer/cache

我的问题是我试图用custom缓存目录(在本例中是/composer/cache)但话又说回来,我没有办法在提供自定义缓存目录作为选项时调用composer安装命令(即,这就是bitbucket教程在本例中对bundle所做的事情:

 - bundle install --path vendor/bundle

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

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

更新2:composer.json和composer.lock之间的差异

  • 首先作为健全性检查,我只是cloned https://bitbucket.org/toters/composer-cache/src/master/的回购协议尼科 哈斯 https://stackoverflow.com/users/1116230/nico-haase,并运行管道,passed https://bitbucket.org/toters/composer-cache/addon/pipelines/home#!/results/3
  • 我复制并粘贴了他的内容bitbucket-pipelines.yml https://bitbucket.org/toters/composer-cache/src/master/bitbucket-pipelines.yml到我的,我复制并粘贴了他的作曲家.json https://bitbucket.org/toters/composer-cache/src/master/composer.json,我运行了管道。失败❌

但我在作曲家安装日志中得到了这个:

+ composer install --ignore-platform-reqs --no-scripts
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
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%)
  • 所以我认为这是因为composer.lock文件与composer.json不同步,所以我添加了composer update到我的管道..这是从缓存加载的! ✅但这里失败了❌:
    composer update
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 108 installs, 0 updates, 0 removals
      - Installing ocramius/package-versions (1.4.2): Downloading (connecting...)Downloading (0%)           Downloading (30%)Downloading (35%)Downloading (65%)Downloading (80%)Downloading (100%)
      - Installing symfony/flex (v1.6.0): Downloading (connecting...)Downloading (100%)         
    Symfony operations: 1 recipe (4c6f09f5995a77b64f54dd80675d3bfe)
      - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Restricting packages listed in "symfony/symfony" to "5.0.*"
    Prefetching 106 packages 
      - Downloading (0%) (5%) (10%) (16%) (21%) (31%) (36%) (41%) (47%) (52%) (57%) (65%) (70%) (75%) (80%) (85%) (90%) (95%) (100%)
    Package operations: 106 installs, 0 updates, 0 removals
      - Installing psr/container (1.0.0): Loading from cache
      - Installing symfony/service-contracts (v2.0.1): Loading from cache
      ..
      ..
    Executing script cache:clear [KO]
     [KO]
    Script cache:clear returned with error code 1
    !!  Fatal Error: composer.lock was created for PHP version 7.2.9 or higher but the current PHP version is 7.1.32.

注意:在我原来的composer.json文件中,我找到了这一行

  "config": {
        ..
        "cache-dir": "~/.cache/composer",
    },

所以我删除了该行,但这也没有帮助。

仍在挖掘(作为记录,这是我的composer.json好像 https://bitbucket.org/snippets/toters/onrA6z,我保留了cache-dir部分内容供参考)


根据Bitbucket 论坛上的一个问题 https://community.atlassian.com/t5/Bitbucket-questions/Can-t-cache-Node-nor-Composer-in-Pipelines-amp-Deployment/qaq-p/707689,如果您使用的 docker 映像将下载的文件放在不寻常的位置,则可能会发生这种情况。根据有关缓存的文档 https://confluence.atlassian.com/bitbucket/caching-dependencies-895552876.html,通常缓存的目录是~/.composer/cache,而镜像的 docker 文件 https://hub.docker.com/layers/totersapp/laravel-docker/phpredis/images/sha256-7b918176939385629c0557fb1453b4fd996c72ece58f8cb4468ec70e35ade11f uses /composer.

请尝试使用以下配置。它包含一个自定义缓存(需要自定义名称!),将自定义的 Composer 文件夹放入缓存中:

pipelines:
  branches:
    develop:
    - step:
        caches:
          - composer-custom

definitions:
  caches:
    composer-custom: /composer/cache

正如你所看到的https://bitbucket.org/haasenico/composer-cache/addon/pipelines/home#!/results/4 https://bitbucket.org/haasenico/composer-cache/addon/pipelines/home#!/results/4,缓存已被使用并且似乎适用于我的简短示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Composer 缓存不适用于 bitbucket 管道构建 的相关文章

  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • PHP 开发相当于 Mongrel/Webrick 吗?

    PHP 开发中是否有与 Rails 开发期间使用 Mongrel Webrick 等效的方法 我通常在端口 3000 上使用 Mongrel 在开发过程中为我的 Rails 应用程序提供服务 我从事 PHP 开发已经有几年了 据我所知 方法
  • 如何使用 Facebook SDK API 为页面/网址“点赞”?

    我正在使用这段代码 facebook gt api me likes post array url gt http www google com 我收到以下错误 Fatal error Uncaught OAuthException 200
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • 在没有 noexec 选项的情况下将卷挂载到 docker 容器中

    据我所知 docker 也包括 docker compose 使用 noexec 选项将卷安装到容器中 因此我无法从安装的目录中启动任何程序 services app build context dockerfile Dockerfile
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 经常提交 docker 容器是一个好习惯吗?

    我在里面使用WebSphere Liberty 由于 WebSphere Liberty 需要频繁的 xml 编辑 这对于 Dockerfile 命令来说是不可能的 我必须不时地对容器进行 docker commit 以便其他人可以使用我的
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • 如何延迟 AngularJS 即时搜索?

    我有一个似乎无法解决的性能问题 我有一个即时搜索 但它有点滞后 因为它开始搜索每个keyup JS var App angular module App App controller DisplayController function s
  • C++中高效比较字符串的方法

    像这样将一个字符串与另一个字符串或字符串文字进行比较是否有效 string a string b if a test or if a b 我的同事让我使用 memcmp 对此有何评论 Thanks Yes use a b 不要听你的同事的话
  • 如何在 Docker Compose 中初始化 MySql 数据库

    设想 我在 Spring 中开发了一个微服务 它使用 mysql 8 数据库 该数据库必须初始化 创建数据库 一些表和数据 在我的主机上 我使用 data sql 和 schema sql 脚本初始化了数据库 问题是 我必须设置 sprin
  • 在表单之间传递数据

    我有两种形式 第一的 Form1有一个组框 一些标签和一个列表框 我按下一个按钮 然后新的Form2打开并包含一些文本 我想将文本传输到Form2到列表框中Form1 到目前为止 我所做的是将列表框的修饰符设置为public然后将此代码放入
  • 如何从视图访问 django 模型属性?

    我有一个 Django 模型 class DebtRequest models Model from user models ForeignKey User related name debt requests from user to u
  • 从资源文件夹或SD卡访问文件有什么区别

    我正在开发一个应用程序 我必须使用三种不同大小的文件 1mb 5mb 15mb 我搜索了一下 然后知道我们可以将这些视频保存在资产文件夹中并可以使用这些视频 其次 我了解到我们可以将这些视频保存在资产文件夹中 并且安装时我们可以将所有视频移
  • Android 将 ParseObject 发送到另一个 Activity

    我有一个 ParseObject 我想发送到另一个活动 public class HWMMatch extends ParseObject implements Serializable public HWMMatch public Par
  • 查找数组中是否缺少元素的复杂性

    我正在尝试编写一个函数 用 C 语言 来检查数组是否包含所有元素 0 和 size 1 之间 例如 如果数组的大小为 3 则它应该具有 0 1 2 以任何顺序 问题是 在没有额外数组的情况下执行此操作的最有效的复杂性是多少 我的尝试的复杂性
  • 与 char *、unsigned char * 和signed char * 别名

    A char 和合格的变体 可以为任何东西起别名 是signed char and unsigned char 及其合格的变体 不受此限制 换句话说 我了解到申请是个好主意restrict to char 函数参数 如果我不希望它们为其他类
  • GWT - 构造 Java AST 时出错

    编译过程中可能是什么原因导致此错误 我已经从这个原型生成了项目https github com ArcBees Arcbees Archetypes https github com ArcBees Arcbees Archetypes我只
  • OpenGL ES 和 OpenGL 兼容着色器

    我想要 OpenGL ES 和 OpenGL Windows 具有相同的着色器源 为此 我想定义自定义数据类型并仅使用 OpenGL ES 函数 一种方法是定义 define highp define mediump define lowp
  • JavaFX 8 计算“textarea”中的行数

    我们正在尝试计算 TextArea 中的行数以下是 TextArea 属性 PrefWidth 600 和 PrefHeight 620 以及 MaxHeight 620文本换行设置为 true 我们将 JavaFX 8 与场景生成器一起使
  • 小时显示 hourSegments 角度日历

    在我的日历中 我需要显示一天和一周的时间 如下所示 09 00 09 15 09 20 我把包升级到最新了 angular calendar version 0 26 1 现在下面的代码出现错误 我无法再像以前一样显示时间 模块 ts cl
  • 复制并粘贴值而不是公式

    第一次编写宏 我必须仅将单元格值复制到另一个单元格值 并且我让它工作 但是 我不确定如何在不指定范围的情况下复制整个列 因为范围每次可能不同 在这里 我尝试使用一个有效的范围 但我希望它检查该列的单元格值 直到找到值复制 粘贴到另一列 这是
  • Vue.js / webpack 没有创建构建文件?

    这可能是一个愚蠢的问题 但到底是什么 我正在使用 vue cliwebpack simple模板 在该项目的 webpack 配置中我发现以下内容 output path path resolve dirname dist publicPa
  • 使“枚举时修改”集合成为线程安全的

    我想创建一个线程安全的集合 可以在枚举时进行修改 例子ActionSet类商店Action处理程序 它有Add方法将新的处理程序添加到列表中 并且Invoke枚举并调用所有收集的操作处理程序的方法 预期的工作场景包括非常频繁的枚举 并且在枚
  • Java dom4j org/jaxen/NamespaceContext 异常

    我已经下载了并将其添加到java的构建路径中 我也熟悉java lang NoClassDefFoundError org saxpath SAXPathException https stackoverflow com questions
  • 程序如何覆盖之前的输出行?

    程序如vim top or alsamixer输出多行文本并以某种方式操作已写入的文本行 我知道写 r字符到 stdout 这会将光标返回到行的开头 允许覆盖当前行 但不能覆盖之前的任何行 这些程序正在做什么才能拥有这些更高级的用户界面以及
  • 如何通过 DialogFragment 使用 startActivityForResult() ?

    我的应用程序需要添加用户名才能正常运行 mainActivity 在顶部显示从数据库检索的用户名 mainActivity 还有一个按钮 可通过 startActivityForResult 方法进入 addusername 活动 当用户实
  • Composer 缓存不适用于 bitbucket 管道构建

    我在我的 bitbucket 管道中得到了这个 pipelines branches develop step caches composer name unit tests Delivery image totersapp laravel