簡體   English   中英

無法在 Jenkins 管道中的 docker 容器中運行 jasmine 測試用例

[英]Could not run jasmine test case in docker container in Jenkins pipeline

我一直在嘗試為我在 docker 容器中的Angular 7編寫的 UI 代碼運行jasmine測試,該容器構建在node:10-alpine上。 我試圖運行安裝 chromium 和 puppeteer,但我的 chrome headless 似乎沒有被捕獲。 我收到以下錯誤:

WARN [launcher]: ChromeHeadless 沒有在 210000 毫秒內捕獲,正在殺死。

WARN [launcher]: ChromeHeadless 在 2000 毫秒內沒有被殺死,發送 SIGKILL。 WARN [launcher]: ChromeHeadless 沒有在 2000 毫秒內被 SIGKILL 殺死,> 繼續。 npm 錯誤! 代碼 ELIFECYCLE npm 錯誤! 錯誤號 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();

在業力配置中

但一點運氣都沒有。 誰能給我最好的解決方案? 提前致謝?

在掙扎了將近一周之后,我不知何故找到了解決辦法。 在我的 customLaunchers 中只使用“--no-sandbox”標志且沒有 puppeteer 的配置最少,我能夠通過正確設置以下環境變量在 docker 容器中運行我的 jasmine 測試用例:

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

以下是我在終端中運行以檢查測試是否成功執行的命令:

docker 運行 -e CHROME_BIN=/usr/bin/chromium-browser -e CHROME_PATH=/usr/lib/chromium/ -v path-to-project:/usr/src/app -w /usr/src/app dockerImage sh - c“apk add chromium && npm install && npm 重建 node-sass && npm 運行測試:ci”

在我的 jenkins 文件中,我添加了以下行來運行 Jenkins 管道中的測試用例:

withEnv(["CHROME_BIN=/usr/bin/chromium-browser", "CHROME_PATH=/usr/lib/chromium/"]) { sh 'apk add chromium && npm install && npm run test:ci && npm run build' }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM