我正在使用 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。在这里写一篇。