[英]How to add postgis extension to postgresql database in gitlab-ci.yml
I'm setting up test stage in gitlab-ci.yml
file and I have error, when config postgis extension for postgresql databese.我正在
gitlab-ci.yml
文件中设置测试阶段,但在为 postgresql 数据库配置 postgis 扩展时出现错误。
I need DATABASE_URL, like postgis://...
for my Django env我需要 DATABASE_URL,例如
postgis://...
用于我的 Django 环境
My latest version of gitlab-ci.yml
:我的最新版本
gitlab-ci.yml
:
image: python:3.6
services:
- postgres:9.6
variables:
POSTGRES_DB: test_db
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_pass
DATABASE_URL: "postgis://test_user:test_pass@postgres:5432/test_db"
stages:
- test
- build
test:
stage: test
script:
- apt-get update -qy
- apt-get -y install binutils libproj-dev gdal-bin postgis*
- pip3 install pipenv
- pipenv install --dev
- export DATABASE_URL=$DATABASE_URL
- pipenv run test
Gitlab Pipeline error response: Gitlab 管道错误响应:
Running with gitlab-runner 11.5.0 (3afdaba6)
on docker-auto-scale fa6cab46
Using Docker executor with image python:3.6 ...
Starting service postgres:9.6 ...
Pulling docker image postgres:9.6 ...
$ export DATABASE_URL=$DATABASE_URL
$ pipenv run test
/root/.local/share/virtualenvs/pixel-api-yo4gnz48/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
""")
Creating test database for alias 'default'...
Traceback (most recent call last):
File "/root/.local/share/virtualenvs/pixel-api-yo4gnz48/lib/python3.6/site-packages/django/db/backends/utils.py", line 83, in _execute
return self.cursor.execute(sql)
psycopg2.OperationalError: could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
django.db.utils.OperationalError: could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
Try to use alternative option from django documentation :尝试使用django 文档中的替代选项:
from django.contrib.postgres.operations import CreateExtension
from django.db import migrations
class Migration(migrations.Migration):
operations = [
CreateExtension('postgis'),
...
]
You can use a service that already has postgis and install the binary files, like this:您可以使用已有 postgis 的服务并安装二进制文件,如下所示:
services:
- mdillon/postgis:9.4
variables:
POSTGRES_DB: "db_name"
POSTGRES_USER: "db_user"
POSTGRES_PASSWORD: "db_pwd"
POSTGRES_HOST: "db"
POSTGRES_PORT: "5432"
DATABASE_URL:
"postgres://db_user:db_pwd@mdillon__postgis/db_name"
before_script:
- apt-get update -qy
- apt-get -y install binutils libproj-dev gdal-bin
- python -V
- pip3 install -r requirements.txt
References: - https://www.hackzine.org/postgis-on-gitlab-ci.html参考资料: - https://www.hackzine.org/postgis-on-gitlab-ci.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.