Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 持续集成建议?_Ruby On Rails_Ruby_Git_Testing_Continuous Integration - Fatal编程技术网

Ruby on rails 持续集成建议?

Ruby on rails 持续集成建议?,ruby-on-rails,ruby,git,testing,continuous-integration,Ruby On Rails,Ruby,Git,Testing,Continuous Integration,我正在为我的Rails应用程序设置一个持续集成服务器(使用Integrity),我希望得到以下建议: 大多数人是在每次推送到他们的中央SCM存储库时,还是只在推送到他们的暂存分支时,才设置CI来构建和测试他们的应用程序 我将使用CI服务器自动运行flay、flog、reek和rcov——还有其他应该运行的测试或代码覆盖工具吗 我正计划在主机上部署我的应用程序。我是否应该在一个单独的切片主机切片上设置CI服务器,该切片设置为与我的生产切片相同(wrt安装的gems、库等) 如果我确实为CI使用单

我正在为我的Rails应用程序设置一个持续集成服务器(使用Integrity),我希望得到以下建议:

  • 大多数人是在每次推送到他们的中央SCM存储库时,还是只在推送到他们的暂存分支时,才设置CI来构建和测试他们的应用程序
  • 我将使用CI服务器自动运行flay、flog、reek和rcov——还有其他应该运行的测试或代码覆盖工具吗
  • 我正计划在主机上部署我的应用程序。我是否应该在一个单独的切片主机切片上设置CI服务器,该切片设置为与我的生产切片相同(wrt安装的gems、库等)
  • 如果我确实为CI使用单独的片,那么将CI片也用于登台服务器是否有任何危害
亲切问候,


Jacob

听起来您可能希望将CI服务器用于两个目的:

1) 持续集成-这可能是对中央SCM回购部分的推动。使用CI工具验证开发人员集成其工作的区域是否正常工作。这将为开发团队提供快速反馈。在这里,您应该尽可能快速地运行测试

2) 构建管理—针对您的暂存分支,构建可能是为了更严格地测试和管理它们,以便进一步部署。在这里,我将运行您设置的所有测试(以及其他海报建议的测试),并可能仔细跟踪这些构建


如果这是正确的,我肯定会构建这两个分支,但是您的测试集合以及如何维护每个分支的构建结果可能会有所不同。再说一次,如果您能够保持主线非常干净,那么单独的暂存分支能为您带来什么?

测试和代码覆盖工具-您希望在套件中尽可能多地包含这些工具,而不会使构建周期陷入停滞。e、 如果您添加了太多的内容,并且构建时间超过了几分钟,那么在每次提交后继续构建将不会有成效

IMO,每次提交后都为您的中心位置和暂存位置构建。你可能会得到双倍的覆盖率,但是如果你有足够的带宽和CPU,为什么不呢

我同意使用双片设置,是的,其中一个原因是它允许您使用第二片作为暂存/最终测试区域。另外,如果您从暂存片部署到生产片,您可以在片之间传输信息时利用它们的本地网络。那样做要快得多


希望有帮助:-)

如果您有一个更正式的发布过程,并且有一个单独的测试团队,不能像开发人员签入时那样快速测试,那么您可能会设置两个版本。(1) 一个非常快速、轻量级的过程,没有永久的工件或存储,每次构建完成后都会覆盖上一次构建。这会不断地针对每个集成运行,以告诉开发人员刚刚出现的问题。除了决定何时是构建类型(2)的最佳时机外,这些仅内部构建不受发布经理的控制。构建类型(2)是一种不太频繁的构建,它运行所有测试(包括手动测试),创建完整的构件,并存储元数据以对构建进行编号和复制。

我们使用Rackspace进行部署和测试。对于开发,我们有以下三个部分:

Dev

托管一个mercurial存储库,由开发人员不断更新(通常只是将其分支合并到主分支)。在办理登机手续时不会触发测试,而是每小时进行一次。此服务器安装了MySQL,并带有测试数据库

测试

托管mercurial存储库,仅由dev manager更新。用于验收测试,但也有夜间测试运行。此服务器安装了带有测试数据库的MyDQL

部署

在成功的QA之后,我们将更新从测试推送到部署服务器。此服务器可以被视为“setup.exe”-客户切片应该从该切片的备份映像顺利初始化。在这个层面上的测试实际上围绕着确保这一点的实现



新客户设置 Rackspace允许您复制服务器的副本,这样我们就可以追溯到系统的几个版本

当需要设置新客户时,我们从最新版本的Deploy中初始化他们的新切片,添加HTTPS证书并在DNS中注册新切片

我们还将/etc/nginx/nginx.conf和/etc/mongrel_集群存储在版本控制下

克里斯

大多数人都建立CI来构建和 在每次推送他们的应用程序时测试他们的应用程序 中央SCM存储库,或仅当 推到他们的临时分支机构

取决于团队规模和项目速度。我在代码的不同分支上工作的人员越多,我希望CI运行的频率和精力就越大。我建议你从尽可能多的CI开始,然后在你认为合适的时候逐渐放弃

我将使用CI服务器 自动剥皮、鞭打、发臭, 还有rcov,还有其他的吗 测试或代码覆盖工具I 你应该跑吗

米制福涵盖的一切都是一个良好的开端。如果您的团队有一名技术编写人员,并且/或者文档是交付的一部分,那么您也可以将rdoc加入其中

我计划在上部署我的应用程序 主持人。我应该设置CI吗 服务器位于单独的主机片上 设置为相同(wrt 安装了gems、库等)到我的 生产片

如果你能负担得起,是的。通常,小型团队和新成立的公司不能为每项任务都配备专用服务器,但我是隔离的坚定支持者。对于相同的设置,供应商应尽一切可能;设置新服务器应该是快速、简单和自动化的

如果我对CI使用单独的切片, 使用CI有什么害处吗 给牡鹿切片