我的目标是能够基于提交并推送到存储库的 Git 分支将 Django 应用程序部署到两个环境(DEV 或 PROD)之一。该存储库与运行 Django 应用程序的服务器托管在同一台服务器上。
现在,我virtualenv
设置了两个。每个环境一个。它们是相同的。我设想它们只有requirements.txt
在我的存储库中被修改时才会改变。
我在互联网上看到过通过git
将存储库直接托管在将部署应用程序的位置来提供部署的教程。这不适用于我的架构。我正在使用 RhodeCode 来托管/管理存储库。我希望能够使用接收后(或其他更合适的)挂钩来触发对适当环境的更新。
与此答案类似的内容将使我能够缩小我想要关注的环境。
当我将source activate
命令放入外部脚本(即我的钩子)时,脚本会在该命令处停止。已virtualenv
正确启动,但不会执行脚本中的任何进一步操作(即。pip install -r requirements.txt
或./manage.py migrate
)。
我的问题是,我怎样才能让那个钩子运行关联的virtualenv
?或者,如果它已经在运行,使用新的requirements.txt
、South
迁移的和应用程序代码适当地更新它?
这个工作流程是否过于复杂?从理论上讲,它应该git push
与适当的分支一样简单。