无法在 Jenkins 管道中的 docker 容器中运行 jasmine 测试用例



我一直在尝试在基于node:10-alpine的 docker 容器中对用Angular 7编写的 UI 代码运行jasmine测试。我试图运行安装铬和木偶,但我铬无头似乎没有被捕获。我得到以下错误:

警告[启动器]:ChromeHeadless在210000毫秒内没有捕获,杀死。

警告[启动器]:ChromeHeadless在2000毫秒内没有被杀死,发送了SIGKILL。 警告[启动器]:ChromeHeadless在2000毫秒内没有被SIGKILL杀死,>仍在继续。 呵呵!代码电子生命周期 呵呵!errno 1

我也在下面尝试过:

  • 增加捕获超时和浏览器无活动超时
  • 添加了除"--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(); 

在业力配置中

但根本没有运气。谁能为我提供最佳分辨率?提前感谢?

经过近一周的挣扎,我不知何故找到了解决方法。在我的自定义启动器中只需"--no-sandbox"标志且没有木偶师的最小配置,我能够通过正确设置以下环境变量在 docker 容器中运行我的 jasmine 测试用例:

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

以下是我在终端中运行的命令,用于检查测试是否成功执行:

docker run -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 rebuild node-sass && npm run test: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'
}

最新更新