2

AWS Beanstalk アプリケーションで Symfony2 を使用しています。Deployment については、アプリケーションがアップロードされた後にComposer のインストールを行うように Deployment-Script を調整しました。

これは理論的には機能しますが、いくつかの欠点があります。主に、展開時間が常に増加し (サーバーのタイムアウトが発生することがあります)、他のサーバーの可用性への依存度が高まることです。

一部の人々がvendor/*を tmp-dir にコピーし、展開後にそれを元に戻して、展開を高速化することを読みました。

これは非常に役立ちますが、composer.jsonかなり頻繁に更新しているため、展開プロセスでコンポーザーをインストールする必要があります。最善の方法は、すべての依存関係 ( ) をリポジトリにファイルとして含め、デプロイ中にcomposer のインストールvendor/*をスキップすることだと考えています。

残念ながら、ほとんどのライブラリは git-submodules として含まれており、AWS はサブモジュールをサポートしていません (すべてのファイルがリポジトリにある必要があります)。

だからここに私の質問があります:

すべての git-submodules を削除し、代わりに実際のファイルをコミットする最良の方法は何ですか?

私は組み合わせてみました:

git submodules --recursive foreach

サブモジュールを削除するにはどうすればよいですか? しかし、成功せずに。

4

1 に答える 1

1

このワークフローを試すことができます:

  • 新しいリリース フォルダを作成する
  • 新しいフォルダーでコードの最新バージョンをチェックアウトします
  • 現在アクティブなリリース フォルダから新しいリリース フォルダに「vendor」をコピーします。
  • 「composer.phar インストール」を実行します

このように、composer はリリース間で変更されたライブラリのみを更新します。

capistrano ( capifonyと呼ばれる Symfony 固有のバージョンもあります)でうまく使用できます。特に、git リポジトリのクローンを保持できるため、新しいリリースのプッシュがはるかに高速になり、デプロイとロールバックがワンライナーで完了します。

于 2013-03-26T12:33:09.627 に答える