持续部署
Continuous Deployment
我正在尝试为我的 Rails 项目设置持续部署。到目前为止,我已经完成了以下步骤:
- 我的应用在 Github.
- 我已经设置了 Travis CI。
- 我已经创建了暂存环境。 (www.staging.myappname.com)
- 我已经创建了生产环境。 (www.myappname.com)
- 我已经集成了 Travis CI 和 Github。
我想要达到的目标。
- 有人创建了拉取请求。
- Travis CI 运行 是针对拉取请求的构建。 (此部分已完成)
- 一旦 Pull request 合并到 master 分支中,Travis CI 运行 再次测试。 (此部分已完成)
- 如果测试是绿色的,那么将主分支部署到暂存环境。 (我可以通过将
deploy
部分添加到 .travis.yml
文件来做到这一点。
- 运行 针对暂存环境进行测试,如果测试通过则将 master 分支部署到生产环境。 (我不知道这部分是怎么实现的)
我不确定这样做是否正确。我阅读了几篇博客 post,我注意到人们为暂存和生产创建了不同的 git 分支。需要这种方法吗?
此外,我可以使用 Travis CI 轻松将我的代码推送到暂存环境,但我不知道如何 运行 在暂存环境中再次测试并将代码推送到生产环境。我应该 运行 针对暂存环境进行哪种类型的测试?我应该只关注临时环境的 selenium 测试吗?
我可以使用像 codeship
这样的工具,但他们只提供 100 build/month 的免费计划,而在 Travis 中,我可以免费获得无限制的构建计划。这是选择 Travis 而不是 codeship 的主要原因。
所以我的问题是:
- 我走对了路吗?
- 我应该 运行 针对登台服务器进行什么类型的测试?
- 如何使用 Travis 从暂存到生产进行部署CI?
- 我的 rails 应用程序中需要
staging.rb
文件吗?如果是,那么它与 production.rb
文件有何不同?
- 我是否需要为暂存和生产创建不同的 git 分支?目前我只有 master 分支,我正在尝试将其部署到暂存和生产中。
通常人们有 2 个分支,一个用于 staging/development,部署在登台服务器上,另一个用于生产,部署到生产分支
一旦您的暂存分支经过测试并准备好部署到生产环境中,您可以创建一个从暂存分支到主分支的拉取请求(或者只是在本地合并并推送它),然后 CI 服务器应该检测到一个master 分支上的新版本,然后将其部署到生产服务器。
我正在尝试为我的 Rails 项目设置持续部署。到目前为止,我已经完成了以下步骤:
- 我的应用在 Github.
- 我已经设置了 Travis CI。
- 我已经创建了暂存环境。 (www.staging.myappname.com)
- 我已经创建了生产环境。 (www.myappname.com)
- 我已经集成了 Travis CI 和 Github。
我想要达到的目标。
- 有人创建了拉取请求。
- Travis CI 运行 是针对拉取请求的构建。 (此部分已完成)
- 一旦 Pull request 合并到 master 分支中,Travis CI 运行 再次测试。 (此部分已完成)
- 如果测试是绿色的,那么将主分支部署到暂存环境。 (我可以通过将
deploy
部分添加到.travis.yml
文件来做到这一点。 - 运行 针对暂存环境进行测试,如果测试通过则将 master 分支部署到生产环境。 (我不知道这部分是怎么实现的)
我不确定这样做是否正确。我阅读了几篇博客 post,我注意到人们为暂存和生产创建了不同的 git 分支。需要这种方法吗?
此外,我可以使用 Travis CI 轻松将我的代码推送到暂存环境,但我不知道如何 运行 在暂存环境中再次测试并将代码推送到生产环境。我应该 运行 针对暂存环境进行哪种类型的测试?我应该只关注临时环境的 selenium 测试吗?
我可以使用像 codeship
这样的工具,但他们只提供 100 build/month 的免费计划,而在 Travis 中,我可以免费获得无限制的构建计划。这是选择 Travis 而不是 codeship 的主要原因。
所以我的问题是:
- 我走对了路吗?
- 我应该 运行 针对登台服务器进行什么类型的测试?
- 如何使用 Travis 从暂存到生产进行部署CI?
- 我的 rails 应用程序中需要
staging.rb
文件吗?如果是,那么它与production.rb
文件有何不同? - 我是否需要为暂存和生产创建不同的 git 分支?目前我只有 master 分支,我正在尝试将其部署到暂存和生产中。
通常人们有 2 个分支,一个用于 staging/development,部署在登台服务器上,另一个用于生产,部署到生产分支
一旦您的暂存分支经过测试并准备好部署到生产环境中,您可以创建一个从暂存分支到主分支的拉取请求(或者只是在本地合并并推送它),然后 CI 服务器应该检测到一个master 分支上的新版本,然后将其部署到生产服务器。