У меня есть угловое приложение, которое использует карму для испытаний.Я также использую 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
и видел, как хромовые процессы начинались и продолжались, пока их не убила карма.