使用 Travis CI 配置 Mysql 5.7

Posted

技术标签:

【中文标题】使用 Travis CI 配置 Mysql 5.7【英文标题】:Configure Mysql 5.7 with Travis CI 【发布时间】:2016-04-22 06:20:52 【问题描述】:

我无法在 Travis CI 上运行测试,因为我找不到在容器中设置 mysql 5.7 的方法。

我发现这个要点https://gist.github.com/BenMorel/d981f25ead0926a0cb6d 解释了travis.yml 的配置方法。以下是命令:

sudo apt-get remove --purge "^mysql.*"
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/lib/mysql
sudo rm -rf /var/log/mysql
echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections
wget http://dev.mysql.com/get/mysql-apt-config_0.2.1-1ubuntu12.04_all.deb
sudo dpkg --install mysql-apt-config_0.2.1-1ubuntu12.04_all.deb
sudo apt-get update -q
sudo apt-get install -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" mysql-server

在那之后,我正在做:

$ mysql -uroot < tests/ApiBundle/Datas/dump_test.sql
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

为什么?我已经尝试了很多东西……Google 绝对不是我在这个问题上的朋友……

【问题讨论】:

你试过sudo mysql -uroot &lt; tests/ApiBundle/Datas/dump_test.sql吗? 是的,我做了……同样的错误! 你试过使用Docker吗?检查这个:medium.com/@mtparet/… 自从我发布这个之后,我当然做到了:),并且每次我在 CI / 开发 / 测试运行时遇到同样的问题时仍然这样做。就像现在每个人都应该的那样。尽管如此,我不想也不应该更新这个问题或答案恕我直言,因为它们仍然可能对任何试图从容器中做到这一点的人有用。 【参考方案1】:

好的,我已经知道如何在 Travis CI 默认容器中重新安装 MySQL 5.6。

这是.travis.yml中需要的:

services:
  - mysql
sudo: true
before_script:
  - bash .travis.install-mysql-5.7.sh

这里是.travis.install-mysql-5.7.sh(编辑感谢@codyzu 回答):

echo mysql-apt-config mysql-apt-config/select-server select mysql-5.7 | sudo debconf-set-selections
wget https://dev.mysql.com/get/mysql-apt-config_0.7.3-1_all.deb
sudo dpkg --install mysql-apt-config_0.7.3-1_all.deb
sudo apt-get update -q
sudo apt-get install -q -y --allow-unauthenticated -o Dpkg::Options::=--force-confnew mysql-server
sudo mysql_upgrade

希望对遇到同样问题的人有所帮助!

【讨论】:

如果 sysem 与 MySQL 用户(或类似用户)一起工作,则需要调用 sudo mysql_upgrade 作为 .travis.install-mysql-5.7.sh 的最后一步。 这对我不起作用,我遇到了依赖问题:mysql-server depends on mysql-community-server (= 5.7.8-rc-1ubuntu12.04); however: Package mysql-community-server is not configured yet. 我必须添加它以使其正常工作:sudo mysql_upgrade -u root sudo service mysql restart 由于 mysql-5.7-dmr 不再存在,因此已损坏。这是我的(现在)working script 我更新了您的答案仅供参考,因为由于WARNING: The following packages cannot be authenticated! 而失败,所以必须通过--allow-unauthenticated 才能安装它。【参考方案2】:

根据目前的文档,你只需要启用sudo,并在你的.travis.yml文件中添加如下配置

addons:
  apt:
   sources:
    - mysql-5.7-trusty
   packages:
    - mysql-server
    - mysql-client

来源https://docs.travis-ci.com/user/database-setup/#MySQL-5.7

【讨论】:

以上是关于使用 Travis CI 配置 Mysql 5.7的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 travis ci 配置 SSH 连接?

如何在 Travis-CI 配置文件 (YAML) 中正确使用 curl?

使用Travis-CI自动化部署Hexo博客

webpack配置篇(三十五):持续集成和Travis CI

GitHub项目加入Travis-CI的自动集成

[travis-ci]自动集成测试