gpt4 book ai didi

php - 使用 Composer 进行持续集成

转载 作者:IT王子 更新时间:2023-10-29 00:05:50 25 4
gpt4 key购买 nike

我有一个 PHP 项目,我在其中通过 Composer 加载包。我还在专用 CI 服务器上使用 Jenkins 运行持续集成。每小时一次,Jenkins 查询我的存储库是否有更改,如果存在,则执行测试运行。

测试运行的第一步是重新 checkout 存储库,并使用 Phing 执行应用程序构建。构建的其中一个步骤是执行一个

composer install

由于 Jenkins 始终使用新 checkout ,因此 composer 将始终在每次测试运行时获取所有包,即使自上次运行以来没有更改任何包。这有几个缺点:

  • 完成测试运行需要相对较长的时间(composer需要获取例如Zend Framework,它相当大
  • 如果每小时都获取新包,这会给 packagist 服务器带来不必要的压力
  • 如果由于某种原因, Composer 安装失败,我的测试运行也会失败。

我正在考虑将 composer 获取的包存储在 CI 服务器的中央位置,这样 Jenkins 就可以在每次测试运行时访问该位置的包。当然,现在我必须重写我的部分应用程序来处理供应商文件夹在 CI 服务器上位于不同位置的事实。其次,我必须告诉 Jenkins 跟踪 composer.lock 文件的变化,看看他是否需要运行 composer。恐怕这两件事都不是微不足道的。

有没有人对其他/更好的方法有任何建议,或者在每次测试运行时通过 composer 获取所有包是否是最佳选择。不可否认,这是确保您始终使用正确包的最佳方法,但感觉有点像浪费带宽,尤其是在开发的后期阶段,包列表几乎不会再更改。

最佳答案

加快速度的一种方法是使用 composer install --prefer-dist,它只下载 zip,即使是开发包。这对于独特的构建是首选,因为它跳过了项目的整个历史。

至于节省 packagist,不要太担心,与每次提交时基于 travis 构建的所有开源库相比,每小时构建一次不会产生巨大差异。

关于php - 使用 Composer 进行持续集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com