私の目標は、コミットされてリポジトリにプッシュされた Git ブランチに基づいて、Django アプリケーションを 2 つの環境 (DEV または PROD) のいずれかにデプロイできるようにすることです。このリポジトリは、Django アプリケーションが実行されているのと同じサーバーでホストされています。
現在、2台virtualenv
設置しています。環境ごとに 1 つ。それらは同一です。requirements.txt
私のリポジトリで変更された場合にのみ変更されると思います。
git
アプリケーションがデプロイされる場所にリポジトリを直接ホストすることによって、デプロイを提供するインターネット上のチュートリアルを見てきました。これは私のアーキテクチャでは機能しません。リポジトリをホスト/管理するために RhodeCode を使用しています。post-receive (または、より適切な場合はその他) フックを使用して、適切な環境への更新をトリガーできるようにしたいと考えています。
この回答に似たものを使用すると、焦点を当てたい環境を絞り込むことができます。
source activate
コマンドを外部スクリプト (つまり、フック)に入れると、スクリプトはそのコマンドで停止します。はvirtualenv
適切に開始されますが、スクリプト内のそれ以降のアクション (pip install -r requirements.txt
または./manage.py migrate
) は実行されません。
私の質問は、関連するフックを実行するにはどうすればよいvirtualenv
ですか? requirements.txt
または、既に実行されている場合は、新しい、South
移行、およびアプリケーション コードで適切に更新しますか?
このワークフローは複雑すぎませんか? git push
理論的には、適切なブランチと同じくらい単純でなければなりません。