数据库
首页 > 数据库> > 在GitLab CI上的测试脚本之前执行mysql命令

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

作者:互联网

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

我在前脚本中运行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包.

所以解决它;在before命令中安装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

标签:docker,mysql,gitlab,gitlab-ci
来源: https://codeday.me/bug/20190828/1749965.html