大家,早安!
在我的日常工作中,我们使用NGINX + uWSGI + MongoDB作为Python应用程序容器。 对于版本化和协作开发,我们在每台开发人员计算机上使用GIT进行安装,并将一个中央GIT存储库用于交付目的。
一切运转顺利,但有一个小问题。
到目前为止,当我们想要提供新版本的内部软件时,所有开发人员合并他们的变更,然后select一个(通常是项目经理)将最终产品推送到中央GIT服务器上的“分支主”存储库。
一旦这个推送完成,一个在GIT上持续查看的脚本将检索新版本,并将其推送到我们的uWSGI服务器上,然后为所有新连接加载新版本。
现在,我们想知道如何能够推送GIT服务器,并且uWSGI直接从这个GIT服务器加载和服务它的web应用程序。
有没有人有类似的解决scheme或uWSGIconfiguration这样做?
你的基于服务器的git-repo不需要任何工作。 你总是会依赖从中央git-repo(恕我直言)派生的本地repo-clone。 你可以做些什么来摆脱丑陋的cronjobs:在git-server上使用git的pre / post-receive-hook :
除了客户端挂钩之外,您还可以使用几个重要的服务器端挂钩作为系统pipe理员来执行几乎任何types的项目策略。 这些脚本在推送到服务器之前和之后运行。 预挂钩可以在任何时候退出非零,以拒绝推送以及将错误消息打印回客户端; 你可以设置一个像你想的那样复杂的推送策略。
还有一个信息性的stackoverflow – 有关网站分段的git-post-receive-hook的讨论 。 ESP。 从顶级答案git-website-howto检查第一个链接
我使用公司网站(它是从github库生成的)的一个技巧是将这些选项添加到uWSGI:
; reload the server everytime the repository is updated touch-reload = .git/index ; every minute pull from the repository cron = -1 -1 -1 -1 -1 git pull