django - 在部署时重置 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
我应该把重置命令放在哪里?如何?
解决方案
Heroku 的发布阶段正是您所需要的。它的主要用例之一是与新版本一起运行数据库操作。您可以release
在Procfile
. 例如,典型 Rails 应用程序的迁移可能看起来像这样:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq
release: bundle exec rake db:migrate
而您希望在此release
过程中为您的应用程序交换适当的重置命令。
推荐阅读
- zap - 基于 ZAP 表单的身份验证不起作用 - 如何通过直接在网页上提供用户名/密码来扫描网页
- postgresql - 我收到“docker:无效的参考格式”。在我的本地机器上
- javascript - 从 json 获取值到数据表时出错
- bash - 为 bash 脚本提供接受标志(如命令)的选项
- java - 将 JSON 转换为具有 Json 属性的 POJO 作为具有不同属性的 jsonObject
- rust - 返回一个闭包,返回 Rust 中的函数参数
- javascript - 使用 ajax 或 javascript 时如何防止重复提交?
- arrays - 无法从 Stack1 类的参数化构造函数初始化数组大小......但如果我直接将整数值提供给数组代码工作正常
- parsing - 已解析项目的 FParsec 和后缀修饰符
- nginx - 使用 proxy_pass 为 NGINX 上的图像设置浏览器缓存