gpt4 book ai didi

django - 在 Gitlab 上为 django 项目设置 CI/CD

转载 作者:行者123 更新时间:2023-12-04 04:16:45 26 4
gpt4 key购买 nike

这是我第一次尝试在 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因此我在 yml 文件的下一行添加了 Ruddra 的建议:

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'"

关于django - 在 Gitlab 上为 django 项目设置 CI/CD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60597871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com