Я впервые пытался добавить CI / CD для проекта Django на gitlab. Я хочу настроить автоматическое c тестирование и развертывание на сервере в ветке разработки, если она прошла успешно. С тестами почти все отработано, зависимости установлены и запущены python manage.py test
но проблема с тестовой базой данных. Ошибка трассировки чуть ниже, и здесь я не совсем понимаю, как происходит взаимодействие с базой данных во время тестов.
Creating test database for alias 'default'...
.....
MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
...
super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")
В настройках django settings.py
разъем для подключения База данных получается с помощью таких переменных в файле .env.
.env
SECRET_KEY=ja-t8ihm#h68rtytii5vw67*o8=o)=tmojpov)9)^$h%9#16v&
DEBUG=True
DB_NAME=db_name
DB_USER=username
DB_PASSWORD=dbpass
DB_HOST=127.0.0.1
И с развертыванием проекта все еще не ясно. Буду признателен за помощь в настройке.
gitlab-ci.yml
stages:
- test
- deploy
test:
stage: test
script:
- apt update -qy
- apt install python3 python3-pip virtualenvwrapper -qy
- virtualenv --python=python3 venv/
- source venv/bin/activate
- pip install -r requirements.txt
- python manage.py test
stage: deploy
script:
...
???
only:
- develop
UPD Соответственно рекомендацию Руддры я добавил в yml файл следующей строки:
services:
- mysql
variables:
# Configure mysql service (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: test
MYSQL_ROOT_PASSWORD: mysql
connect:
image: mysql
script:
- echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
И в результате я получил connect успешный статус и test статус ошибки с той же трассировкой, что и начальный вопрос