我正在使用 heroku 和 git 开发一个 ruby on rails 网站。
我应该使用哪些工具和功能来设置以下简单的开发过程?
代码 > 签到 > 自动测试 > 自动部署
- 我将我的代码检查到我的存储库中(首选选项,托管 git,如 github)
- 测试自动运行并且网站部署在我的登台 Heroku 应用程序中
- 如果测试通过,网站会自动部署在我的生产 heroku 应用上
- 如果测试失败,我想以某种方式得到通知。
你会怎么做?
我正在使用 heroku 和 git 开发一个 ruby on rails 网站。
我应该使用哪些工具和功能来设置以下简单的开发过程?
代码 > 签到 > 自动测试 > 自动部署
你会怎么做?
CircleCi提供您所需要的。我们将在每次推送时运行您的测试,如果它们通过(到 Heroku 或真正使用 Capistrano/Fabric/任何东西)部署它们,如果它们失败则向您发送通知。
作为序言,我是 Codeship ( https://codeship.io ) 的创始人之一,该服务正是支持这一点。
但更多关于主题,基本上有两种不同的方式我认为可以实现(请记住,我使用的所有分支名称都是任意的,并且可以命名完全不同):
每当您推送到您的主分支或特定的部署分支时,您都会运行您的测试,如果所有测试都通过了,您首先部署到您的暂存应用程序,运行单独的测试(Selenium 或酱实验室非常适合),如果这包括迁移您推送到您的生产应用程序。
这很棒,因为最新版本始终在生产中可用,我们现在使用这个周期很长一段时间。非常适合我们。不利的一面是,推送到一个临时的 heroku 应用程序需要一些时间。如果您想针对生产数据的副本运行迁移,则需要更多时间。这不是永恒,但需要几分钟。
您可以有单独的暂存/生产分支,这些分支部署到相应的 heroku 应用程序。这具有更快的优势,并且您可以控制何时释放某些部分。特别是对于在部署到生产之前需要外部反馈的应用程序,这非常有用。
我们在 Railsonfire 支持所有这些,但我们目前正在开发一个更好的新版本的服务。我们与 Heroku 集成得非常好,因此您不必考虑这一点(但仍然可以选择以任何您想要的方式自己做)
我们使用诚信。这是一个非常简单的解决方案 - 它不会在阳光下做所有事情,但它很容易设置和处理最常见的用例/功能。如果您希望它做更多事情,它也很容易破解。
完整性状态:
Heroku 是部署 Integrity 的最简单、最快的方法。
然而:
注意
在 Heroku 上无法通过 SSH 访问存储库
这是因为您的 Integrity 应用程序需要一个 SSH 密钥。这不是不可能的,但肯定要跳几圈。您需要为 Integrity 提供一个私钥并将其放入应用程序中,然后破解 Integrity 以在启动git clone
.
在您列出的事情中,自动部署可能是大多数人不希望他们的 CI 服务器做的事情(而 Integrity 并没有提供开箱即用的功能)。您需要配置 git 以使用该 ssh 密钥并git push
从正确的位置(签出的存储库)启动一个。
不幸的是,我不知道如何做到这一点的细节——我们实际上是在 VPS 上运行 Integrity。
嗯,Hudson 提供了一个 git 插件以及脚本支持。剩下的就是配置了,我猜。
试试Heroku-Bartender。在这里写一篇。