2013-03-12 71 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存儲庫的克隆,所以推出新版本要快得多,部署和回滾只需一行。