12

我正在使用 heroku 和 git 开发一个 ruby​​ on rails 网站。

我应该使用哪些工具和功能来设置以下简单的开发过程?

代码 > 签到 > 自动测试 > 自动部署

  • 我将我的代码检查到我的存储库中(首选选项,托管 git,如 github)
  • 测试自动运行并且网站部署在我的登台 Heroku 应用程序中
  • 如果测试通过,网站会自动部署在我的生产 heroku 应用上
  • 如果测试失败,我想以某种方式得到通知。

你会怎么做?

4

6 回答 6

5

CircleCi提供您所需要的。我们将在每次推送时运行您的测试,如果它们通过(到 Heroku 或真正使用 Capistrano/Fabric/任何东西)部署它们,如果它们失败则向您发送通知。

于 2012-11-08T16:46:47.610 回答
2

作为序言,我是 Codeship ( https://codeship.io ) 的创始人之一,该服务正是支持这一点。

但更多关于主题,基本上有两种不同的方式我认为可以实现(请记住,我使用的所有分支名称都是任意的,并且可以命名完全不同):

一次性分期/制作

每当您推送到您的主分支或特定的部署分支时,您都会运行您的测试,如果所有测试都通过了,您首先部署到您的暂存应用程序,运行单独的测试(Selenium 或酱实验室非常适合),如果这包括迁移您推送到您的生产应用程序。

这很棒,因为最新版本始终在生产中可用,我们现在使用这个周期很长一段时间。非常适合我们。不利的一面是,推送到一个临时的 heroku 应用程序需要一些时间。如果您想针对生产数据的副本运行迁移,则需要更多时间。这不是永恒,但需要几分钟。

分段/生产作为单独的步骤

您可以有单独的暂存/生产分支,这些分支部署到相应的 heroku 应用程序。这具有更快的优势,并且您可以控制何时释放某些部分。特别是对于在部署到生产之前需要外部反馈的应用程序,这非常有用。

我们在 Railsonfire 支持所有这些,但我们目前正在开发一个更好的新版本的服务。我们与 Heroku 集成得非常好,因此您不必考虑这一点(但仍然可以选择以任何您想要的方式自己做)

于 2012-11-29T00:00:58.480 回答
1

我们使用诚信。这是一个非常简单的解决方案 - 它不会在阳光下做所有事情,但它很容易设置和处理最常见的用例/功能。如果您希望它做更多事情,它也很容易破解。

完整性状态:

Heroku 是部署 Integrity 的最简单、最快的方法。

然而:

注意
在 Heroku 上无法通过 SSH 访问存储库

这是因为您的 Integrity 应用程序需要一个 SSH 密钥。这不是不可能的,但肯定要跳几圈。您需要为 Integrity 提供一个私钥并将其放入应用程序中,然后破解 Integrity 以在启动git clone.

在您列出的事情中,自动部署可能是大多数人不希望他们的 CI 服务器做的事情(而 Integrity 并没有提供开箱即用的功能)。您需要配置 git 以使用该 ssh 密钥并git push从正确的位置(签出的存储库)启动一个。

不幸的是,我不知道如何做到这一点的细节——我们实际上是在 VPS 上运行 Integrity。

于 2010-08-29T18:33:29.267 回答
1

市场上有很多工具可以做到这一点。SnapCI提供部署管道,让您通过测试推送每个提交,然后作为部署管道的不同阶段进入暂存和生产。我们还完全支持测试并行化、构建分支和拉取请求。

于 2015-02-25T18:22:59.237 回答
0

嗯,Hudson 提供了一个 git 插件以及脚本支持。剩下的就是配置了,我猜。

哈德逊:http ://hudson.dev.java.net

于 2010-06-27T11:32:10.510 回答
0

试试Heroku-Bartender在这里写一篇。

于 2011-03-20T20:21:59.227 回答