繁体   English   中英

.gitlab-ci mysql 服务在 Django

[英].gitlab-ci mysql service in Django

我正在学习使用 Gitlab CI,我正在尝试配置.gitlab-ci 文件以将 CI 运行到我的 Django 项目中。

  • 我有以下.gitlab-ci 文件:
stages:
    - test
 
variables:
    MYSQL_DATABASE: $DB_NAME
    MYSQL_USER: $DB_USER
    MYSQL_PASSWORD: $DB_PASSWORD

services:
    - mysql:8.0

test: 
    image: alpine:3.13
    stage: test
    script:
        - ...(up the app)...
  • 我已经在 gitlab 中配置了环境变量(设置 -> CI/CD -> 变量),例如:

在此处输入图像描述

我正在使用“mysql”作为主机。 参考: https://docs.gitlab.com/ee/ci/services/mysql.html

  • 我的settings.py文件中有以下数据库配置:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': getenv('DB_NAME'),
        'USER': getenv('DB_USER'),
        'PASSWORD': getenv('DB_PASSWORD'),
        'HOST': getenv('DB_HOST'),
        'PORT': getenv('DB_PORT'),
        'TEST' : {
            'NAME' : f"test_{getenv('DB_NAME')}",
        }
    }
}

当我运行它时,所有安装都成功但在运行测试时出现以下错误:

django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql' (-2)")

如果在 Gitlab 文档中说如果我使用mysql服务它是我需要配置的主机,为什么会发生这种情况?

如果您使用的是 docker(我想它来自您的 DB_HOST),您的 Mysql 服务是否称为 mysql? 从您粘贴的错误来看,django 容器(或 django 所在的任何位置)似乎无法解析主机名“mysql”。 如果您不在 docker 之外,可能您必须在 hosts 文件中配置 mysql 主机名。

这是我的错误。 我阅读了日志——尽管它们很广泛——我发现了以下几行:

2021-04-11T00:04:33.635793560Z     You need to specify one of the following:
2021-04-11T00:04:33.635798376Z     - MYSQL_ROOT_PASSWORD
2021-04-11T00:04:33.635802359Z     - MYSQL_ALLOW_EMPTY_PASSWORD
2021-04-11T00:04:33.635805957Z     - MYSQL_RANDOM_ROOT_PASSWORD

这是必要的 - 当然 - 使用 MySQL 根密码预定义变量,没有它,服务将无法运行。

我们至少需要以下变量之一来运行服务:

- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD

我在变量部分更改了我的 gitlab-ci 文件,并通过以下方式更改了指令:

variables:
    MYSQL_DATABASE: $DB_NAME
    MYSQL_USER: $DB_USER
    MYSQL_PASSWORD: $DB_PASSWORD
    MYSQL_HOST: $DB_HOST
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD

然后我在 CI/CD 配置(设置 -> CI/CD -> 变量)中导出了DB_ROOT_PASSWORD变量,它起作用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM