2013-03-12 67 views
2

我们在AWS Beanstalk应用程序上使用Symfony2。对于部署,我们调整了Deployment-Script在应用程序上传后执行作曲家安装Symfony2,AWS Beanstalk:如何将供应商推送为不是git子模块的文件来回购

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

我读过一些人将vendor/*复制到tmp-dir,并在部署到speed-up the deployment后将其移回。

这很有帮助,但我们经常更新我们的composer.json,所以我们仍然必须在我们的部署过程中安装作曲家安装。我们认为最好的方法是在部署期间将所有依赖关系(vendor/*)作为文件包含在回购中并跳过作曲家安装

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

所以在这里我的问题是:

什么是去除所有的混帐子模块,并提交真实的文件,而不是最好的方法是什么?

我曾尝试结合:

git submodules --recursive foreach 

How do I remove a submodule?但没有更迭。

回答

1

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

  • 创建一个新的发行文件夹
  • 结帐您的代码从当前激活的发行文件夹到新的新文件夹
  • 副本“供应商”的最新版本发行文件夹
  • 运行“composer.phar安装”

这样,作曲家将只更新天秤座两个版本之间的变化。

我使用它成功与capistrano(也有Symfony特定版本capifony),可以帮助你。特别是因为它可以保持git存储库的克隆,所以推出新版本要快得多,部署和回滚只需一行。