无法在 Jenkins 管道的 docker 容器中 运行 jasmine 测试用例
Could not run jasmine test case in docker container in Jenkins pipeline
我一直在尝试 运行 jasmine
测试我用 Angular 7
编写的 UI 代码,在 docker 容器中构建 node:10-alpine
。我已经尝试 运行 安装 chromium 和 puppeteer 但我 chrome headless 似乎没有被捕获。我遇到以下错误:
WARN [launcher]: ChromeHeadless have not captured in 210000 ms, killing.
WARN [launcher]: ChromeHeadless was not killed in 2000 ms, sending SIGKILL.
WARN [launcher]: ChromeHeadless was not killed by SIGKILL in 2000 ms, > continuing.
npm ERR! code 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();
在业力配置中
但一点运气都没有。谁能给我最好的解决方案?提前致谢?
经过将近一周的努力,我终于找到了解决办法。在我的 customLaunchers 中仅使用 "--no-sandbox"
标志并且没有 puppeteer 的最小配置,我能够通过正确设置以下环境变量 运行 在 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'
}
我一直在尝试 运行 jasmine
测试我用 Angular 7
编写的 UI 代码,在 docker 容器中构建 node:10-alpine
。我已经尝试 运行 安装 chromium 和 puppeteer 但我 chrome headless 似乎没有被捕获。我遇到以下错误:
WARN [launcher]: ChromeHeadless have not captured in 210000 ms, killing.
WARN [launcher]: ChromeHeadless was not killed in 2000 ms, sending SIGKILL. WARN [launcher]: ChromeHeadless was not killed by SIGKILL in 2000 ms, > continuing. npm ERR! code 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();
在业力配置中
但一点运气都没有。谁能给我最好的解决方案?提前致谢?
经过将近一周的努力,我终于找到了解决办法。在我的 customLaunchers 中仅使用 "--no-sandbox"
标志并且没有 puppeteer 的最小配置,我能够通过正确设置以下环境变量 运行 在 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'
}