我在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实例上运行我的测试以确保环境完全相同.这是真正得心应手的地方.