mysql - 在 GitLab CI 上的测试脚本之前执行 mysql 命令

标签 mysql docker gitlab gitlab-ci

我想在我的测试脚本执行之前创建测试数据库。我已经包含了 mysql 服务,但是我找不到运行 mysql 命令的方法。

我在 before-script 中运行 mysql ...,但它一直报错

/bin/bash: line 57: mysql: command not found

这是我的.gitlab-ci.yml

image: maven:3.5-jdk-8

services:
  - mysql

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  MYSQL_ROOT_PASSWORD: example

cache:
  paths:
    - .m2/repository

compile:
  stage: build
  script:
    - 'mvn $MAVEN_CLI_OPTS test-compile'

verify:
  stage: test
  before_script: 
    - mysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" --host=mysql < src/main/sql/database.sql
  script:
    - 'mvn $MAVEN_CLI_OPTS verify'
  artifacts:
    paths:
    - target/*.jar

最佳答案

您正在另一个容器中运行 MySQL 作为连接服务。 maven:3.5-jdk-8 图像不包含您使用 mysql 调用的 mysql-client 包。

所以要解决;在你之前的命令中安装 mysql-client:

before_script: 
    - apt-get update -q && apt-get install -qqy --no-install-recommends mysql-client
    - mysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" --host=mysql < src/main/sql/database.sql

关于mysql - 在 GitLab CI 上的测试脚本之前执行 mysql 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46873159/

相关文章:

PHP 回显具有相同值的 id

docker - 来自服务器的领事空回复

django - 我应该将反向代理添加到与 docker 上的应用程序相同的容器中吗?

bundler - Sidekiq 未在 GitLab 6.0.0 安装上运行

mysql - 按字符串的一部分连接

c# - 使用 C# 中的 datagridview 值将表中的状态从 "reserved"更新为 "expired"

docker - 列表的 `docker stack deploy`配置合并行为是什么?

go - Gitlab-CI 运行器 : ignore self-signed certificate

docker - 使用 Visual Studio 将 Docker 镜像发布到 GitLab 容器注册表时遇到问题

mysql - INNER JOIN DISTINCT 与 MySQL