Heroku + Rails运行自定义构建测试

时间:2017-12-26 09:47:36

标签: ruby-on-rails heroku

我想在Heroku中包含一个作为构建过程的一部分执行的测试。如果这些测试中的任何一个失败,我都不希望Heroku发布该版本。

测试:

e.g verify initialisation of *required* env variables

因此当我跑

git push heroku master

我希望我的测试能够完成。

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

您可以使用CircleCI。首先将您的应用与CircleCI集成,然后在分支>中查看选项要求状态检查在合并前通过;存储库设置的受保护分支部分。之后,您需要编写一些shell脚本并将其保存到项目文件夹中的脚本中。

您可以查看本教程,了解您的应用的CircleCI实现。

https://circleci.com/docs/1.0/language-ruby-on-rails/

对于部署脚本,您可以使用以下内容。在脚本文件夹和里面创建一个名为production的文件;

#!/bin/bash
set -x
set -e

export RAILS_ENV='production'
export RACK_ENV='production'

[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow
git push git@heroku.com:myapp.git master:master
heroku run rake db:migrate --app myapp
heroku run rake db:seed --app myapp

流程将是这样的;您将创建从分支到主控的拉取请求。创建拉取请求后,您的测试将自动在CircleCI中启动。如果它通过,您将能够将拉取请求合并到主分支。合并后,测试将再次运行,它将按照您在circle.yml文件中定义的方式部署应用程序。

您可以找到有关circle.yml配置here的详细信息,您可以在circle.yml文件中使用上述脚本,例如

deployment:
  production:
    branch: master
    commands:
      - ./script/production

我认为更好的做法是重复这些步骤以进行暂存环境。

希望它有所帮助。