Не удалось запустить тестовый пример жасмина в контейнере docker в конвейере Jenkins - PullRequest
0 голосов
/ 27 мая 2020

Я пытался запустить jasmine тест для моего кода пользовательского интерфейса, написанного на Angular 7 в контейнере docker, который построен на node:10-alpine. Я попытался запустить установку Chrome и кукольника, но мой chrome headless, похоже, не был захвачен. Я получаю сообщение об ошибке:

WARN [launcher]: ChromeHeadless не был захвачен за 210000 мс, убивает.

WARN [launcher]: ChromeHeadless не был убит через 2000 мс, отправка СИГКИЛЛ. WARN [launcher]: ChromeHeadless не был убит SIGKILL за 2000 мс,> продолжаю. npm ОШИБКА! код ELIFECYCLE npm ERR! errno 1

Я также пробовал ниже, черт возьми:

  • увеличение captureTimeout и browserNoActivityTimeout
  • добавил еще несколько флагов, кроме --no-sandbox как показано ниже
customLaunchers: 

{
      ChromeHeadlessNoSandbox:{
        base: "ChromeHeadless",
        flags: [
          "--no-sandbox",
          "--no-proxy-server",
          "--disable-web-security",
          "--disable-gpu",
          "--disable-dev-shm-usage",
          '--no-proxy-server',
          '--proxy-bypass-list=*',
          '--window-size=1920,1080',
          '--remote-debugging-port=9222'
        ]
      }
    }

Я также добавил

process.env.CHROME_BIN = require ('puppeteer'). executablePath ();

в конфиге кармы

Но не повезло вообще. Может ли кто-нибудь предоставить мне лучшее разрешение? Заранее спасибо?

1 Ответ

0 голосов
/ 01 июня 2020

Пробившись почти неделю, я как-то нашел исправление. С минимальной конфигурацией в моих customLaunchers с флагом «--no-sandbox» и без кукловода я смог запустить свой тестовый пример жасмина в контейнере docker, правильно установив следующие переменные среды:

CHROME_BIN = / usr / bin / chromium-browser и CHROME_PATH = / usr / lib / chromium /

Ниже приведена команда, которую я запускаю в своем терминале, чтобы проверить, успешно ли выполняется тест:

docker run -e CHROME_BIN = / usr / bin / chromium-browser -e CHROME_PATH = / usr / lib / chromium / -v путь к проекту: / usr / src / app -w / usr / src / app dockerImage sh - c "apk add chromium && npm install && npm rebuild node-sass && npm run test: ci"

В моем файле jenkins я добавил следующие строки для запуска тестовых примеров в конвейере Jenkins:

withEnv (["CHROME_BIN = / usr / bin / chromium-browser", "CHROME_PATH = / usr / lib / chromium /"]) {sh 'apk добавить хром && npm установить && npm запустить тест: ci && npm запустить сборку '}

...