質問: elastic beanstalk rails gitソースとデプロイフックを備えたアプリケーション 既存のrailsアプリケーション用にelasticbeanstalkをセットアップしたい。サンプルのfooアプリを作成することに成功しました。これらは私が持っている質問ですデプロイするローカルパスからではなく、gitリポジトリからデプロイする必要があります。サンプルのfooアプリでこれを行うにはどうすればよいですか。git aws.pushコマンドは、新しいec2インスタンスにデプロイされているようです。ただし、変更をgitリポジトリにプッシュしませんでした。 git aws.pushを実行する前に、git pushを個別に実行する必要がありますか? gitステータスを実行すると、ブランチが1コミット進んでいることに注意してください。 awsは別のgitリポジトリを維持していますか?代わりにgitリポジトリを使用するにはどうすればよいですか?[mymac:~/projects/new/foo(master)]$ git aws.push counting objects: 4949, done. delta compression using up to 4 threads. compressing objects: 100% (1115/1115), done. writing objects: 100% (4949/4949), 14.11 mib | 1.90 mib/s, done. total 4949 (delta 3800), reused 4944 (delta 3798) remote: to https://akiajzt3wfy2wlo6chqq:20121127t030627zf56675b2f4c9c731ca6f51b11d36a438e8bcee25c5171061ce5ac681495318c9@git.elasticbeanstalk.ap-southeast-1.amazonaws.com/v1/repos/617069/commitid/39396162666436346439656465313537613561343561626465643931393366623762386265303138/environment/6170692d656e76 * [new branch] head -> master [mymac:~/projects/new/foo(master)]$ git status # on branch master # your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean) 以下は、gitpushだけの結果です。[mymac:~/projects/new/foo(master)]$ git push counting objects: 5, done. delta compression using up to 4 threads. compressing objects: 100% (3/3), done. writing objects: 100% (3/3), 340 bytes, done. total 3 (delta 2), reused 0 (delta 0) to git@github.com:xxxx/foo.git 885cc33..99abfd6 master -> master これとは別に、before_symlinkデプロイフックが必要です。これどうやってするの ?
回答: git aws.pushオプションをすでに試しているかどうかは、質問からは明らかではありませんでした。ラックベースのアプリケーションをawselastic beanstalkにデプロイするには、awsblogで ブログ投稿 を参照できます。同じことを要約すると、次の簡単な手順でそれを行うことができます。 eb init eb start git aws.push もちろん、これにはaws elasticbeanstalkコマンドラインツールをダウンロードする必要があります。afaik、aws elastic beanstalkにはまだgitデプロイフックとの統合がありませんが、jenkinsのようなciサーバーをすでに使用している場合は非常に簡単です。 githubは、ほとんどのciサーバーと非常にうまく統合できます。カスタムシェルコマンドを使用して新しいjenkinsジョブを追加することで、ciサーバーからgit pushトリガーgit aws.pushを実現できます。新しいビルドをプッシュする前に、テストハーネスを実行することもできます。 jenkinsまたはtravisciがあなたに代わって仕事をします!before_symlinkタイプのタスクの実行に関して、aws elasticbeanstalkの動作方法は従来のcapistranoデプロイメントとは異なります。すべてのコードを実行可能アーカイブにバンドルし、負荷分散されたノードにコピーするだけです。 before_symlinkのようなタスクを実行するには、いくつかのカスタム構成ファイルを作成して、gitリポジトリのルートパスの.ebextensionsの下に配置することをお勧めします。私がそれをした方法は、.ebextensions/symlink.configファイルを追加することです。サーバー上のdatabase.ymlファイルをシンボリックリンクするためのサンプルコードを次に示します。container_commands: symlink-db: command: ln -sf /var/app/shared/database.yml $eb_config_app_ondeck/config/database.yml /var/app/shared/ディレクトリでカスタムamiを実行していることに注意してください。そうしないと、vanilla rubyコンテナを起動したときに存在しません。さらに、$eb_config_app_ondeck環境変数現在のデプロイディレクトリ名(通常は/var/app/ondeck)を保持します。これは、デプロイが完了し、rails(passenger)サーバーを再起動する前に、/var/app/currentに移動されます。リクエストの処理に利用できます。詳細は aws elastic beanstalkコンテナのカスタマイズ をご覧ください。お役に立てれば。