我们正在尝试使用Git / Github设置自动部署environemt。我们有3种不同的环境;本地,测试和生活。当我们在本地添加新功能时,我们首先将文件上传到测试服务器以测试新创建的功能。如果一切正常,我们将所有文件上传到实时服务器。但是这个“上传”过程并不是一个完美的解决方案,因为我们有时会忘记上传一些文件。顺便说一下,我们在iPhone和Android上也有移动应用程序,因此移动设备可能是我们的第四个环境。
我们尝试做的是设置自动部署环境。当我们提交一个新功能来测试服务器时,在测试这个新功能后,我们想将它推送到实时服务器。
测试服务器上可能有很多提交,但我们希望将特定提交推送到实时服务器。我们找不到如何应对3-4环境而不是乱码。我们如何将正确的代码推送到实时服务器?我们如何管理我们的测试和实时服务器?是否有任何好的资源告诉如何使用Git / Github设置不同的环境和部署过程?是否有任何文章告诉我们一步一步做什么?
我已阅读过这些文章,但没有一篇文章说明如何应对本地,测试和实时环境。
编辑2012-03-09:我发现http://beanstalkapp.com/和http://springloops.com,他们似乎都非常善于部署。我不确定我是否可以信任这些服务,但他们都完全符合我的要求。我将测试两者并在此分享我的结果,以通知所有人。
答案 0 :(得分:8)
我终于找到了我想要的东西。 http://beanstalkapp.com似乎是最好的选择。它具有自动部署功能,并支持Git。经过一周的测试,我可以说它的工作非常稳定和快速。感谢大家帮助我并试图向我展示道路。
答案 1 :(得分:4)
听起来你需要一个Continuous Integration系统。 Jenkins和Webistrano取得了巨大成功。
关于“我们应该复制哪些文件?”问题。你使用的是git标签吗?如果没有,请开始使用它们!
答案 2 :(得分:2)
git是否是正确的选择,是一个很好的问题。
但如果你要这样做,你应该阅读gitworkflows手册页。具体来说,根据上面的问题,它会推荐什么以及听起来正确的是你需要将每个单独的“东西”放到主题/功能分支中,然后在完成时将该分支合并到正确的树中。这可以让你分离出来,这样你就可以合并所需要的和稳定的东西,而不是合并不需要的东西。
答案 3 :(得分:2)
我最终创建了自己的基本部署工具,它会自动从存储库中删除新的更新 - https://github.com/jesalg/SlimJim - 我认为它不能完全满足您的需求,但您可以阅读它的设置方式,也许您可能会从中获得一些想法。
答案 4 :(得分:0)
我目前正在以这种方式使用git,只是发布了一篇关于here的博客文章。
我通常使用post-receive挂钩来查找推送到发布分支的提交,并在找到时使用git archive命令部署代码库。
这对于小型项目来说很好,如果你有多个开发人员正在处理一个项目,或者它是一个庞大而复杂的代码库,我建议使用Jenkins之类的持续集成系统,如之前的评论所示。
看看这个并看看它是否符合您的需求(包括一个简单的bash部署脚本)
干杯