我在gitlab.com上托管了一个Rails应用程序,我按照本指南配置它以部署到heroku:
http://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html.它工作正常.
我的问题是,每次部署到heroku时如何运行迁移?通过CLI进行部署时,我通常会这样做:
- git push heroku master && heroku run rake db:migrate
但是使用gitlab-ci.yml我不知道如何做到这一点……
解决方法
如果您希望能够在GitLab CI过程中使用Heroku CLI的全部功能(包括在迁移失败时构建失败,无论出于何种原因),您还可以尝试这种方法来安装Heroku CLI并提供状态你的Heroku命令代码返回GitLab,当然还有命令行输出.在命令行上使用没有凭据的heroku运行需要将HEROKU_API_KEY环境变量设置为可以访问相关应用程序的密钥.
- before_script:
- - echo "deb http://toolbelt.heroku.com/ubuntu ./" > /etc/apt/sources.list.d/heroku.list
- - wget -O- https://toolbelt.heroku.com/apt/release.key | apt-key add -
- - apt-get update
- - apt-get install -y heroku-toolbelt
- - gem install dpl
- stages:
- - deploy
- test_on_heroku:
- type: deploy
- script:
- - dpl --provider=heroku --app=my_heroku_app --api-key=$HEROKU_API_KEY
- - heroku run <your command here> --exit-code --app my_heroku_app
我实际上在Heroku实例上运行我的测试以确保环境完全相同.这是真正得心应手的地方.