如何在 CodeShip Basic 的测试管道中为 Laravel 应用程序 运行 自定义 mysql 脚本?

How to run custom mysql script for Laravel app in test pipeline in CodeShip Basic?

PhpUnit 的相对新手和一般测试。我们不在我们的项目中使用迁移,但是我需要 运行 几个脚本来设置数据库进行测试。我如何 运行 mysql 来自测试管道中项目的脚本?在 运行 那些脚本之前,我还需要创建一个具有特定名称的新数据库。

谢谢!

您在本地机器上使用的命令与您在 CodeShip Basic 运行 中可以使用的命令相同。 CodeShip Basic 只是一个带有 Ubuntu Bionic 的构建机器,它将 运行 通过设置、测试和部署命令,就像您在 CLI 中输入每一行一样。 :)

我们还有一些关于 mysql 的文档:https://documentation.codeship.com/basic/databases/mysql/

好的,经过一番挖掘,我发现了如何做到这一切。下面是我用于测试新的 mysql 模式的脚本,该模式由 sql 脚本中的特定用户创建。希望这对以后的人有帮助。

mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE USER 'myuser'@'%' IDENTIFIED BY 'testpassword';"
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE SCHEMA myschemaname;"
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'testpassword';"
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD myschemaname < ./app/Ship/Migrations/1of2-schema.sql
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD myschemaname < ./app/Ship/Migrations/2of2-seed.sql
php artisan passport:install
./vendor/bin/phpunit

$MYSQL_USER$MYSQL_PASSWORD 被 Codeship 取代 - 这些是构建容器中存在的 mysql 的用户和密码的环境变量。

mysql 调用上的 -e 开关运行给定的脚本并退出。不得不这样做,因为我无法与 mysql 客户端交互。