我想在Heroku中包含一个作为构建过程的一部分执行的测试。如果这些测试中的任何一个失败,我都不希望Heroku发布该版本。
测试:
e.g verify initialisation of *required* env variables
因此当我跑
时git push heroku master
我希望我的测试能够完成。
我该怎么做呢?
答案 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
我认为更好的做法是重复这些步骤以进行暂存环境。
希望它有所帮助。