持续部署

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 request 合并到 master 分支中,Travis CI 运行 再次测试。 (此部分已完成)
  4. 如果测试是绿色的,那么将主分支部署到暂存环境。 (我可以通过将 deploy 部分添加到 .travis.yml 文件来做到这一点。
  5. 运行 针对暂存环境进行测试,如果测试通过则将 master 分支部署到生产环境。 (我不知道这部分是怎么实现的)

我不确定这样做是否正确。我阅读了几篇博客 post,我注意到人们为暂存和生产创建了不同的 git 分支。需要这种方法吗?

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

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

所以我的问题是:

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

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

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