首页 > 解决方案 > 在部署时重置 Heroku 上的 Postgres 数据库

问题描述

我有一个带有 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

我应该把重置命令放在哪里?如何?

标签: djangopostgresqlherokugitlab-ciheroku-postgres

解决方案


Heroku 的发布阶段正是您所需要的。它的主要用例之一是与新版本一起运行数据库操作。您可以releaseProcfile. 例如,典型 Rails 应用程序的迁移可能看起来像这样:

web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq
release: bundle exec rake db:migrate

而您希望在此release过程中为您的应用程序交换适当的重置命令。


推荐阅读