CI/CD конвейер для отказа Django
Мой gitlab ci pipeline продолжает давать сбои. Похоже, я застрял здесь. Я все еще новичок в CI, поэтому не знаю, что я делаю неправильно. Любая помощь будет оценена по достоинству Ниже приведен файл .gitlab-ci.yml
image: python:latest
services:
- postgres:latest
variables:
POSTGRES_DB: projectdb
# This folder is cached between builds
# http://docs.gitlab.com/ee/ci/yaml/README.html#cache
cache:
paths:
- ~/.cache/pip/
before_script:
- python -V
build:
stage: build
script:
- pip install -r requirements.txt
- python manage.py migrate
only:
- EC-30
В моем файле settings.py есть следующие настройки
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'thorprojectdb',
}
}
Но когда я отправляю на gitlab, процесс сборки не завершается. Процесс - pip install -r requirements.txt
выполняется отлично, но когда он доходит до - python manage.py migrate
, происходит сбой. Ниже приведена ошибка, которую я получаю
django.db.utils.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1
Анализируя описание файла .gitlab-ci.yml, ясно, что вы объявили базу данных в файле (POSTGRES_DB), но вам не хватает информации, связанной с учетными данными, DB_USER, DB_PASS, как описано по этой ссылке ниже:
Помните, что хорошей практикой является использование раздела объявления переменных в CI/CD в вашем репозитории. Для дополнительной информации:
Репозиторий с примером конфигурации:
repository-example-gitlab-postgres
services:
- postgres
variables:
# Configure postgres service (https://hub.docker.com/_/postgres/)
POSTGRES_DB: custom_db
POSTGRES_USER: custom_user
POSTGRES_PASSWORD: custom_pass
connect:
image: postgres
script:
# official way to provide password to psql: http://www.postgresql.org/docs/9.3/static/libpq-envars.html
- export PGPASSWORD=$POSTGRES_PASSWORD
- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT 'OK' AS status;"