Использование сервисов: mysql для проверки кодирования в gitlab-ci завершается с ошибкой «Отказано в соединении» - PullRequest
0 голосов
/ 04 октября 2018

У меня есть приложение CakePHP с плагином codeception для тестирования. 'Локально я запускаю его в среде докера ddev, и все работает нормально.

При попытке запустить автоматические тесты с помощью gitlab-ci выдается следующая ошибка:

Running with gitlab-runner 11.1.0 (081978aa)
  on shared runner 601c0f11
Using Docker executor with image kevinliteon/cakephp:php7 ...
Starting service mysql:latest ...
Pulling docker image mysql:latest ...
Using docker image sha256:6a834f03bd02bb88cdbe0e289b9cd6056f1d42fa94792c524b4fddc474dab628 for mysql:latest ...
Waiting for services to be up and running...

*** WARNING: Service runner-601c0f11-project-94-concurrent-0-mysql-0 probably didn't start properly.

Health check error:
service "runner-601c0f11-project-94-concurrent-0-mysql-0-wait-for-service" timeout

Health check container logs:


Service container logs:
2018-10-04T12:12:18.904025613Z Initializing database
2018-10-04T12:12:18.925096235Z 2018-10-04T12:12:18.919745Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2018-10-04T12:12:18.925195518Z 2018-10-04T12:12:18.919970Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.12) initializing of server in progress as process 30
2018-10-04T12:12:50.330736417Z 2018-10-04T12:12:50.330487Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

*********

Pulling docker image kevinliteon/cakephp:php7 ...
Using docker image sha256:bd4a83b02647ad93a356b343d2ce5ae3a9a1177aea2cd76c61b009abc7df8990 for kevinliteon/cakephp:php7 ...
Running on runner-601c0f11-project-94-concurrent-0 via d7f4a5e71b47...
Fetching changes...
Removing vendor/
HEAD is now at 92cb022 test
Checking out 92cb0223 as deployment...
Skipping Git submodules setup
Checking cache for default...
Successfully extracted cache
$ vendor/bin/codecept run Unit
Codeception PHP Testing Framework v2.3.9
Powered by PHPUnit 6.5.13 by Sebastian Bergmann and contributors.

In Db.php line 308:

  Db: SQLSTATE[HY000] [2002] Connection refused while creating PDO connection  

Мой gitlab-ci.yml (частично):

services:
- mysql:latest

variables:
  MYSQL_ROOT_PASSWORD: mysql123456789
  MYSQL_DATABASE: test_db
  MYSQL_USER: db
  MYSQL_PASSWORD: db

build:
  ...

codecept:Unit:
  stage: test
  script:
  - vendor/bin/codecept run Unit

В моем codeception.yml я настроил модуль Db:

modules:
    config:
        Db:
            dsn: 'mysql:host=mysql;dbname=test_db'
            user: 'db'
            password: 'db'
            cleanup: true # reload dump between tests
            populate: true # load dump before all tests
            reconnect: true

Я также попытался использовать пользователя root - без успеха.

Проблемав том, что я не могу подключиться к БД по каким-либо причинам ... Может быть, предупреждения при инициализации сервисного контейнера как-то связаны с этим, но я не мог понять, как их исправить или это проблема.

Я действительно много чего перепробовал, но безуспешно!В основном мой код зависит от документации gitlab-ci и кодировки, поэтому он должен работать.

Кто-нибудь успешно реализовал этот сценарий или знает, что я делаю неправильно?Спасибо за любую помощь!

1 Ответ

0 голосов
/ 30 ноября 2018

Я хочу ответить, как я решил это: во-первых, мне пришлось добавить env-varibale "db_dsn" следующим образом:

export db_dsn="mysql://user:paswd@host/db"

Затем я все еще получил ошибку проверки работоспособности.Единственный способ, который я нашел для успешной установки, - это использовать другой образ докера для db-сервиса.Я выбираю «mariadb: последнее» - и тогда у меня это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...