使用 Git/Github 进行部署
Posted
技术标签:
【中文标题】使用 Git/Github 进行部署【英文标题】:Deploying with Git/Github 【发布时间】:2012-03-26 00:59:12 【问题描述】:我们正在尝试使用 Git/Github 设置自动部署环境。我们有 3 种不同的环境;本地,测试和生活。当我们在本地添加新功能时,我们首先将文件上传到测试服务器以测试新创建的功能。如果一切正常,我们将所有文件上传到实时服务器。但是这种“上传”过程并不是一个完美的解决方案,因为我们有时会忘记上传一些文件。顺便说一句,我们在 iPhone 和 android 上也有移动应用程序,因此移动设备可能是我们的第四个环境。
我们尝试做的是设置一个自动化的部署环境。当我们提交一个新功能到测试服务器时,在测试完这个新功能后,我们希望将它推送到实时服务器。
测试服务器上可能有很多提交,但我们希望将特定提交推送到实时服务器。我们找不到如何应对 3-4 个环境而不是乱码。我们如何将正确的代码推送到实时服务器?我们将如何管理我们的测试和实时服务器?是否有任何好的资源告诉如何使用 Git/Github 设置不同的环境和部署过程?有没有文章告诉我们一步一步该怎么做?
我已经阅读了这些文章,但没有一篇说明如何应对本地、测试和实时环境。
http://ryanflorence.com/simple-git-deployment/ http://ryanflorence.com/deploying-websites-with-a-tiny-git-hook/ http://toroid.org/ams/git-website-howto http://danielmiessler.com/study/git/编辑 2012-03-09:我找到了 http://beanstalkapp.com/ 和 http://springloops.com,它们似乎都非常擅长部署。我不确定我是否可以信任这些服务,但它们都完全按照我的意愿行事。我将测试两者并在这里分享我的结果以通知大家。
【问题讨论】:
Git 不是部署工具。有更适合此目标的工具。您可以做的就是将它们组合在一起。 我知道 Git 不是一个部署工具,但是很多开发人员都在使用 Gitlike 一个部署工具。我们使用 Github 来存储我们的代码,所以我们认为使用 Git/Github 作为部署工具会很棒。 这个问题非常适合Server Fault - 例如this 问题(那里的许多类似问题之一)。 作为过去 5 年多的 Springloops 用户,我可以说他们的部署设置轻而易举。我想知道我现在是否可以通过 Github 完成任何几乎一样酷的事情。 【参考方案1】:我终于找到了我要找的东西。 http://beanstalkapp.com 似乎是最好的选择。它具有自动部署功能并支持 Git。经过一周的测试,我可以说它运行起来非常稳定和快速。感谢大家帮助我并为我指明方向。
【讨论】:
看起来人们可以免费试用最昂贵的计划 30 天。【参考方案2】:听起来您需要一个Continuous Integration 系统。我在Jenkins 和Webistrano 上都取得了巨大的成功。
关于“我们应该复制哪些文件?”问题。你还在用 git 标签吗?如果没有,请开始使用它们!
【讨论】:
【参考方案3】:git 是否是正确的选择,这是一个很好的问题。
但是,如果您要这样做,您应该阅读gitworkflows 手册页。具体来说,考虑到上述问题,它会推荐什么以及听起来正确的是,您需要将要开发的每个单独的“事物”放入主题/功能分支,然后在完成后将该分支合并到正确的树中。这使您可以将事物分开,以便合并需要且稳定的内容,而不合并不需要的内容。
【讨论】:
【参考方案4】:我最终创建了自己的基本部署工具,它会自动从 repo 中提取新更新 - https://github.com/jesalg/SlimJim - 我认为它不能完全满足您的需求,但您可以阅读它的设置方式,也许您可能会得到一些想法。
【讨论】:
【参考方案5】:我目前正在以这种方式使用 git,刚刚发布了一篇关于 here 的博客文章。
我通常做的是使用 post-receive 挂钩来查找推送到发布分支的提交,并在找到后使用 git archive 命令部署代码库。
这对于小型项目来说很好,如果您有多个开发人员在一个项目上工作,或者它是一个庞大而复杂的代码库,我确实建议使用像之前评论中建议的 Jenkins 这样的持续集成系统。
看看这个,看看它是否适合你的需要(包括一个简单的 bash 部署脚本)
干杯
【讨论】:
以上是关于使用 Git/Github 进行部署的主要内容,如果未能解决你的问题,请参考以下文章