跨多个构建保存作曲家依赖项的最佳方法是什么

What is the best way to save composer dependencies across multiple builds

我目前正在使用 atlassian bamboo 构建服务器(基于云,使用 aws),并且有一个初始任务只是安装 composer。

这个单一的任务可能会花费相当多的时间,当开发人员多次提交构建服务器 4 构建所有下载依赖项(这些不是并行的)时,这可能会很痛苦。

我希望加快这个过程,但无法想出一种方法来将依赖关系保存到一个公共位置以供跨多个构建使用,这仍然允许应用程序 运行 按预期进行(laravel)

回答

从您的 .gitignore

中删除 composer.lock

说明

当您第一次 运行 compose install 时,作曲家必须检查您的所有依赖项(及其依赖项等)或兼容性。 运行 遍历整个依赖树非常昂贵,这就是为什么需要这么长时间。

在找出所有依赖项后,composer 会将其使用的确切版本写入 composer.lock 文件,这样后续 composer install 命令就不必花费那么多时间 运行查看整个图表。

如果您提交 composer.lock 文件,它会出现在您的 bamboo 服务器上。 composer install 命令将 waaaayy 更快。


提交 composer.lock 无论如何都是最佳实践。引用 the docs:

Commit your application's composer.lock (along with composer.json) into version control.

This is important because the install command checks if a lock file is present, and if it is, it downloads the versions specified there (regardless of what composer.json says).

This means that anyone who sets up the project will download the exact same version of the dependencies. Your CI server, production machines, other developers in your team, everything and everyone runs on the same dependencies, which mitigates the potential for bugs affecting only some parts of the deployments.