Сбой ChromeHeadless внутри конвейера, но не локально - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть угловое приложение, которое использует карму для испытаний.Я также использую gitlab-ci для автоматизации сборки и развертывания приложения.

Недавно мы хотели добавить тесты в конвейер, используя наш собственный образ с Chrome.

Запуск его в конвейере приводит кошибка, связанная с невозможностью подключения к процессу Chrome:

31 12 2018 10:58:36.116:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9877/
31 12 2018 10:58:36.121:INFO [launcher]: Launching browser ChromeKarma with unlimited concurrency
31 12 2018 10:58:36.134:INFO [launcher]: Starting browser ChromeHeadless
31 12 2018 10:59:36.146:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
31 12 2018 10:59:36.163:INFO [launcher]: Trying to start ChromeHeadless again (1/2).
31 12 2018 11:00:36.223:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
31 12 2018 11:00:36.236:INFO [launcher]: Trying to start ChromeHeadless again (2/2).
31 12 2018 11:01:36.296:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
31 12 2018 11:01:36.310:ERROR [launcher]: ChromeHeadless failed 2 times (timeout). Giving up.

При локальном запуске одних и тех же команд в одном и том же образе док-станции (при запуске контейнера с тем же изображением и теми же командами) я не получаюта же ошибка, и тесты запускаются нормально.

После некоторых поисков я попытался добавить другие флаги, кроме --no-sandbox.Это моя текущая конфигурация браузера:

customLaunchers: {
        ChromeKarma: {
            base: 'ChromeHeadless',
            // We must disable the Chrome sandbox when running Chrome inside Docker (Chrome's sandbox needs
            // more permissions than Docker allows by default)
            flags: [
                '--disable-web-security',
                '--disable-gpu',
                '--no-sandbox',
                '--remote-debugging-port=9222'
            ]
        }
    },

Я также попытался добавить спящий режим в список команд в конвейере, а затем подключиться к контейнеру и запустить тесты вручную.Это не приводит к ошибке, и тесты работают нормально.

Версия Docker: Docker версия 17.05.0-ce, сборка 89658be

Я должен также упомянуть, что, находясь внутри контейнера, яуправлял ps ax и видел, как хромовые процессы начинались и продолжались, пока их не убила карма.

1 Ответ

0 голосов
/ 31 декабря 2018

Решил эту проблему сам.Внутри нашей сети мы используем прокси для доступа в интернет.Оказывается, это мешает Chrome подключиться к веб-серверу кармы.Мне пришлось отключить прокси, чтобы заставить его работать.Другим способом решения этой проблемы без удаления прокси было бы добавление следующих флагов в карму.

'--proxy-bypass-list=*',
'--proxy-server=\'http://<my org proxy server>:8080\''
...