2

我们在 AWS Beanstalk 应用程序上使用 Symfony2。对于部署,我们调整了部署脚本以在应用程序上传后进行作曲家安装。

尽管这在理论上可行,但它也有一些缺点——主要是不断增加的部署时间(有时会导致服务器超时)以及对其他服务器可用性的依赖性增加。

我读到有些人将其复制vendor/*到 tmp-dir 并在部署后将其移回以加快部署速度。

它确实很有帮助,但我们composer.json经常更新我们的,所以我们仍然必须在我们的部署过程中安装一个 composer 。我们认为最好的方法是将所有依赖项 ( vendor/*) 作为文件包含在 repo 中,并在部署期间跳过composer 安装

不幸的是,大多数库都包含在 git-submodules 中,AWS 不支持子模块(所有文件都必须在 repo 中)。

所以我的问题来了:

删除所有 git-submodules 并提交真实文件的最佳方法是什么?

我试过结合:

git submodules --recursive foreach

如何删除子模块?但没有成功。

4

1 回答 1

1

你可以试试这个工作流程:

  • 创建一个新的发布文件夹
  • 在新文件夹中签出最新版本的代码
  • 将“供应商”从当前活动的发布文件夹复制到新的发布文件夹
  • 运行“composer.phar 安装”

这样,composer 只会更新版本之间发生变化的库。

我成功地将它与capistrano一起使用(还有一个名为capifony的 Symfony 特定版本)可以帮助你。特别是因为它可以保留您的 git 存储库的克隆,因此推出新版本要快得多,并且部署和回滚是单行的。

于 2013-03-26T12:33:09.627 回答