如何使用一个.travis.yml文件对不同的mysql后端运行测试?
就像这里,使用 matrix->include
. 例如:
对MySQL5.5运行测试
对MySQL5.6运行测试
对MySQL5.7运行测试
对mysql 8.0运行测试
我现在发现的是:
在travis中使用MySQL5.7:https://gist.github.com/gocanto/46b8d39576f612f9c6b8b4ffb3efac98
有关如何在travis上设置数据库的常规信息:https://docs.travis-ci.com/user/database-setup/
后者提到
你也可以在支持sudo的ubuntu trusty上安装mysql 5.7。
但没有提到如何使用5.6和5.7,例如。
可能的解决方法(如果没有“travis”解决方法):
方法:创建不同的docker设置,每个都有特定的mysql版本,并手动测试我的脚本。但这会严重影响我的开发环境,而且相当耗时。
根据相关的环境变量(例如mysql\u version==5.5),从sources/通过apt安装所需的mysql服务器。使用特定的配置来访问它。
感谢您的反馈!
2条答案
按热度按时间zed5wv101#
我将回答我自己的问题,但我愿意接受其他方法。
解决方案
以下解决方案基于pymysql项目中的.travis.yml:https://github.com/pymysql/pymysql/blob/master/.travis.yml
您需要脚本和.travis.yml配置的组合。
脚本
如果要重用以下代码,请在项目中使用以下路径:.travis/install-and-init-db.sh
以下脚本将以所需版本安装数据库:
特拉维斯·伊梅尔
您必须使用矩阵->包含块。对于php,请参阅以下代码。在前面提到的pymysql中,您将找到一种python方法。
创建和使用连接
使用以下参数创建到数据库服务器的连接:
8fsztsew2#
我以@k00ni在pymysql中链接到的示例为例
initializedb.sh
脚本并将其归结为更简单的内容,因为我的测试不需要tls或自定义用户。这就是问题所在linux-mysql
脚本:它出口
MYSQL_URI
所以测试不知道如何连接;根据您自己的测试进行适当的修改。这个脚本不需要等待mysql完成启动,因为sqitch测试在运行连接到数据库的测试之前需要花费一两分钟的时间来做一些其他的事情。如果您的项目需要等待mysql启动,请将以下内容附加到脚本末尾:
不管怎样,`.travis.yml都会创建一个构建阶段来运行多个版本的mysql:
请参阅此构建以了解其最终结果(以及许多其他数据库测试)。