С Laravel, я использую Travis и Scrutinizer CI.
Для travis, используя .yml, я могу заставить его использовать того же пользователя MySQL, которого я использую для теста (в моем случае user is "forge", пароль" forge "и db" test ").
С Scrutinizer я не могу получить то же самое поведение: он жалуется с
[Illuminate\Database\QueryException (1045)]
SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using pa
ssword: NO) (SQL: select * from information_schema.tables where table_schem
a = forge and table_name = migrations)
Это мой файл .scrutinizer.yml
build:
environment:
php: '7.2'
mysql: '5.7'
node: '8.1'
hosts:
laravel.dev: '127.0.0.1'
variables:
APP_KEY: 'base64:OYl4Bk9ekouOUIRXyeTD0FVi+cJ9D+HMyDJBgSBSUuI='
APP_ENV: 'testing'
APP_URL: 'http://laravel.dev'
API_HOST: 'laravel.dev'
#DB_HOST: '127.0.0.1'
#DB_TEST_DATABASE: 'test'
#DB_TEST_USERNAME: 'root'
#DB_TEST_PASSWORD: ''
MAIL_DRIVER: 'log'
cache:
directories:
#- node_modules
- vendor/
- ~/.composer/cache/
dependencies:
before:
- mysql -uroot -e "CREATE DATABASE IF NOT EXISTS test"
- mysql -uroot -e "GRANT ALL ON test.* TO 'forge'@'localhost' IDENTIFIED BY 'forge'";
tests:
before:
- chmod -R 777 storage
- chmod -R 777 bootstrap/cache
- composer dump-autoload
#- php artisan migrate --no-interaction -vvv
#- php artisan db:seed --no-interaction -vvv
- php artisan migrate:refresh --seed --no-interaction -vvv #This will clean, migrate, then seed the db
- rm -rf node_modules
- npm install
#- npm run
- npm run production
override:
-
command: vendor/bin/phpunit --coverage-clover=clover-coverage
coverage:
file: clover-coverage
format: clover
(обратите внимание, что я прокомментировал раздел DB_xx, потому что он не используется в Scrutinizer, и я добавил инструкции mysql).
И это раздел базы данных тестирования конфигурации в config/database.php
:
'testing' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_TEST_DATABASE', 'test'),
'username' => env('DB_TEST_USERNAME', 'forge'),
'password' => env('DB_TEST_PASSWORD', 'forge'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null
],
Scrutinizer создает только «тестовую» базу данных, кажется, что «GRANT» выполняется, но в итоге завершается с ошибкой.
Это журнал: https://scrutinizer-ci.com/g/sineverba/domotic-panel/inspections/a459bd50-4785-4a79-8184-074362631df4/log
Итак, мой вопрос: как я могу заставить анализатора использовать другого пользователядля mysql вместо root без пароля?