我在一个小团队中工作,负责做网站以及网络应用程序。我们的本地开发服务器与我们的标准生产服务器完全相同,我希望将Git集成到我们的工作流程中。我目前使用Gitlab来托管和访问存储库。使用Git的Web应用程序开发/生产设置
我如何设想是:
- 从中央库拉
- 在当地发展
- 推动开发服务器
- 测试
- 合并
- QC
- 包装和船舶到生产服务器
我的问题涉及推送到dev服务器阶段。我希望能够将分支推送到开发服务器,然后立即在浏览器中浏览该分支 - 不是源代码,而是网站本身。
是否有可用于完成此目的的自托管软件?
就像我说的,我目前正在使用Gitlab。我已经试过Gitorious(设置太多),Girocco,git-php,并且无法让他们在我们的开发服务器上工作,至少不是没有改变他们,这打破了拥有相同开发和生产服务器的观点。
这个问题是基于我的工作流程是健全的。如果我的问题由于工作流程不佳而变得模糊,我很乐意在工作流程中指出错误。
更新:我们主要在PHP(各种框架和CMSes)中开发,我们的服务器在Ubuntu 10.04上运行在Nginx后面的Apache。不同的开发人员在同一栋大楼的不同办公室中,但在不同的网络上。虽然我们无法直接访问彼此的机器,但我们都可以访问任何端口上的开发服务器。
更新X2: VonC的答案清理我最有问题的,但理解这一点比较好,我想问一个更具体一点的问题:
正如我跑gitolite( Gitlab就是建立在这个基础之上的),而当gitolite存储裸仓库时,在将分支推送到开发服务器时,如果有工作文件夹,我无法以我的方式在开发服务器上浏览该站点。虽然我可以从gitolite裸仓库进入dev服务器的/ var/www,git init
和git clone [email protected]
,但我更喜欢这会自动完成。
完成此操作的最直接方法是使用上述命令进行更新后的挂钩吗?这似乎比我想象的要复杂一些,但我想这是一个相当常见的用例,所以也许我只是错过了一些东西。
需要关于您的实施的更多细节。 IIS? Apache的?你使用任何Web框架? Rails的? Django的?你所有的服务器都是本地的,没有防火墙可以与之抗衡吗? – Andy 2012-03-31 18:22:43
更新后回答 – user1305321 2012-03-31 18:31:54
我在一艘类似的船上;我有兴趣看看是否有解决方案可以在部署期间管理几个“变量”。例如,在我们的Dev服务器上,我们将使用一个数据库连接字符串(用于我们的开发数据库服务器),对于生产,我们将使用生产数据库服务器。我正在寻找一种解决方案,它将完成您的建议,并根据部署上下文自动切换一些字符串。 – 2012-03-31 21:14:06