我有一个带有PostgreSQL后端的Django网站,我正在使用gitlab ci / cd对其进行测试并将其部署在Heroku上。
我每次都对模型进行很多新的更改,并且我希望在Heroku运行之前清理数据库:python manage.py migrate
。
我知道我可以每次在计算机上运行heroku pg: reset DATABASE
,但是我正在寻找一种自动进行此操作的方法,作为部署的步骤。
这是我的.giltab-ci.yml
文件的内容:
image: python:3.6.5
services:
- postgres:latest
variables:
POSTGRES_DB: asdproject
POSTGRES_USER: postgres
POSTGRES_PASSWORD: asdpassword
test:
script:
- whoami
- export PGPASSWORD=$POSTGRES_PASSWORD
- apt-get update -qy
- apt-get install -y python-dev python-pip
- pip install -r requirements.txt
- python manage.py test --settings=backend_settings.gitlab_runner_settings
production:
type: deploy
script:
- apt-get update -qy
- apt-get install -y ruby-dev
- gem install dpl
- dpl --provider=heroku --app=asd-g7 --api-key=$HEROKU_PRODUCTION_API_KEY
only:
- master
我应该在哪里放置reset命令?以及如何?
答案 0 :(得分:0)
Heroku的release phase是您要寻找的。它的主要用例之一是与新版本一起运行数据库操作。您可以在release
中定义一个Procfile
进程。例如,典型的Rails应用的迁移可能看起来像这样:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq
release: bundle exec rake db:migrate
您希望在release
进程中为应用程序交换适当的重置命令。