ruby-on-rails - 持续部署

标签 ruby-on-rails ruby continuous-integration continuous-deployment

我正在尝试为我的 Rails 项目设置持续部署。到目前为止,我已完成以下步骤:

  1. 我的应用位于 Github 上。
  2. 我已经设置了 Travis CI。
  3. 我已经创建了暂存环境。 (www.staging.myappname.com)
  4. 我已经创建了生产环境。 (www.myappname.com)
  5. 我已经集成了 Travis CI 和 Github。

我想要实现的目标。

  1. 有人创建拉取请求。
  2. Travis CI 根据拉取请求运行构建。 (这部分已经完成)
  3. 一旦 Pull 请求合并到主分支,Travis CI 就会再次运行测试。 (这部分已经完成)
  4. 如果测试是绿色的,则将主分支部署到临时环境。 (我可以通过将 deploy 部分添加到 .travis.yml 文件来做到这一点。
  5. 针对临时环境运行测试,如果测试通过,则将主分支部署到生产环境。 (我不知道如何实现这部分)

我不确定这是否是正确的方法。我读了几篇博客文章,注意到人们创建了不同的 git 分支来进行登台和生产。是否需要这种方法?

此外,我可以使用 Travis CI 轻松地将代码推送到暂存环境,但我不知道如何在暂存环境上再次运行测试并将代码推送到生产环境。我应该针对临时环境运行什么类型的测试?我应该只关注临时环境的 Selenium 测试吗?

我可以使用像 codeship 这样的工具,但他们只提供每月 100 个构建的免费计划,而在 Travis 中我可以获得无限构建的免费计划。这是选择 Travis 而不是 Codeship 的主要原因。

所以我的问题:

  1. 我走在正确的道路上吗?
  2. 我应该针对登台服务器运行什么类型的测试?
  3. 如何使用 Travis CI 从暂存部署到生产?
  4. 我的 Rails 应用中是否需要 staging.rb 文件?如果是,那么它与 Production.rb 文件有何不同?
  5. 我需要为暂存和生产创建不同的 git 分支吗?目前我只有主分支,我正在尝试将其部署到登台和生产环境。

最佳答案

通常人们有 2 个分支,一个用于部署在登台服务器上的登台/开发,一个用于部署到生产分支的生产

一旦您的暂存分支经过测试并准备好在生产环境中部署,您可以创建从暂存到主分支的拉取请求(或者只是在本地合并并推送它),然后 CI 服务器应该在主分支上检测到新版本然后部署到生产服务器。

关于ruby-on-rails - 持续部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260721/

相关文章:

ruby-on-rails - rails 5 : Render a div for each child object in a collection

ruby-on-rails - ActiveStorage + AWS 文件加密

ruby-on-rails - 无法自动加载常量图表,需要 chart.rb 来定义它

ruby-on-rails - Rspec 设置问题

ruby-on-rails - 在 Rails 中设置 cookie 选项后如何修改它?

ruby - 无法在 Windows 中为 Ruby 安装 Nokogiri

ruby - 尝试获取 Google Plus 对某项事件的评论

android - 将 Android(或 Gradle)与 Gitlab-CI 集成

deployment - Team City 多阶段部署的最佳实践是什么?

google-chrome-extension - 仅使用命令行界面在服务器上打包Chrome扩展程序