gitlab에서 Django 프로젝트에 CI / CD를 추가하려고 시도한 것은 이번이 처음입니다. 성공하면 자동 테스트를 설정하고 개발 분기의 서버에 배포하고 싶습니다. 테스트는 거의 모든 것이 해결되고 종속성이 설치되고 시작 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 따라서 Ruddra 권장 사항은 다음 줄에 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"
결과적 으로 시작 질문과 동일한 추적으로 연결 성공 상태 및 테스트 오류 상태를 얻었습니다.
실제로 MySQL
GitLab에서 서비스로 실행할 수 있습니다 . 예를 들면 :
services:
- mysql:latest
variables:
# Configure mysql environment variables (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: "db_name"
MYSQL_ROOT_PASSWORD: "dbpass"
MYSQL_USER: "username"
MYSQL_PASSWORD: "dbpass"
업데이트 : 당신의에서 .env
파일, 다음과 같은 설정을 업데이트 :
DB_HOST=mysql
업데이트 2 : (의이 문제를 기반으로 함) 다음 GitLab
과 같이 코드를 업데이트 할 수 있습니다.
variables:
MYSQL_DATABASE: "db_name"
MYSQL_ROOT_PASSWORD: "dbpass"
MYSQL_USER: "username"
MYSQL_PASSWORD: "dbpass"
test:
script:
- apt update -qy
- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DATABASE --host=$MYSQL_HOST --execute="SHOW DATABASES; ALTER USER '$MYSQL_USER'@'%' IDENTIFIED WITH mysql_native_password BY '$MYSQL_PASSWORD'"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다