gitlab-ci 运行 mariadb 服务未设置 MYSQL_ROOT_PASSWORD

Guy*_*Guy 3 mariadb gitlab docker gitlab-ci

我在这里抓狂,我正在尝试运行 mariadb 服务作为 Rails 应用程序 gitlab-ci 测试的一部分。然而,当测试运行时,mariadb 不遵守 gitlab-ci 中的环境变量.. 例如..

services:
- name: mariadb

variables:
  # Configure mysql service (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: hello_world_test
  MYSQL_ROOT_PASSWORD: mysql

connect:
  image: mariadb
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE"
Run Code Online (Sandbox Code Playgroud)

我希望 mariadb 以 root 密码启动,但我得到的只是一条警告,提示未设置 root 密码,显然我的 CI 失败了。

如果我将 mariadb 更改为 mysql 一切正常。如果我手动启动 mariab

docker run -e MYSQL_ROOT_PASSWORD=mysql mariadb 一切都还好。与使用 docker-compose 一样,为什么它不能在 Gitlab-CI 中工作。我的其他服务似乎能够获取全局变量并使用它们

Guy*_*Guy 6

更多挖掘..我发现 mariadb 需要一些时间来启动并在准备好接受连接之前打开一个 TCP 端口,这似乎是 gitlab 的一个指标,表明它已经准备好以及更多信息..但是 mariadb 不是尚未准备好,因此连接失败。

我现在编写了一个无聊的脚本来睡眠 5 并继续检查连接,暂停 CI 执行,直到数据库准备好访问为止。