运行 GitLab CI 管道与 Docker Centos 7.5 图像时,ChromeHeadless 超时
ChromeHeadless giving timeout when running GitLab CI pipeline with Docker Centos 7.5 image
所以我正在尝试 运行 使用 GitLab CI 的管道在 Centos 7.5 的 docker 图像上对 Angular 6 应用程序进行 Karma 测试。
问题是
30 08 2018 07:09:55.222:WARN [launcher]: ChromeHeadless have not
captured in 60000 ms, killing.
30 08 2018 07:09:55.244:INFO [launcher]: Trying to start ChromeHeadless again (1/2).
30 08 2018 07:10:55.264:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
30 08 2018 07:10:55.277:INFO [launcher]: Trying to start ChromeHeadless again (2/2).
30 08 2018 07:11:55.339:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
30 08 2018 07:11:55.355:ERROR [launcher]: ChromeHeadless failed 2 times (timeout). Giving up.
ERROR: Job failed: exit code 1
我运行测试ng test --browsers ChromeHeadlessNoSandbox --watch=false --code-coverage
业力会议:
browsers: ['Chrome', 'ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-gpu',
'--remote-debugging-port=9222',
],
},
},
还有图像上的 docker 文件我安装了最新的 chrome 稳定版:
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
RUN yum -y localinstall google-chrome-stable_current_x86_64.rpm && yum clean all
你知道它为什么会超时吗?在本地环境中,它 运行 完美。
我已经解决了同样的问题。我的测试服在我的本地机器上运行完美,但是当 运行 这些测试在 docker 容器中时,由于连接超时而失败。 (我也在使用 Gitlab runner,我的 docker 图片是基于 circleci/node:8.9.2-browsers
)
调查此问题后,我发现 docker 文件中缺少 chrome bin 变量路径。所以我通过添加解决了这个问题:
export CHROME_BIN=/usr/bin/google-chrome
到我的 .gitlab-ci.yml 在 before_script
# TESTING
unit_test_client:
stage: test
before_script:
- export CHROME_BIN=/usr/bin/google-chrome
script:
- npm run test:client
您也可以通过设置 CHROME_BIN 来解决您的问题
process.env.CHROME_BIN='/usr/bin/google-chrome'
在你的业力配置文件的顶部。
在这种情况下,你需要处理你是运行本地机器测试的情况,可能它应该匹配相同的chrome路径
您可能想在 Karma 尝试启动浏览器之前检查控制台输出。当我的 Angular 应用程序中存在无效的导入路径时,我因持续超时而卡住了数小时。 Karma 在控制台中打印此类错误,但继续启动浏览器,就好像这些错误无关紧要一样。这有点误导,但在指责浏览器之前值得检查。
其次,机器性能:偶尔你可能会在第一次尝试启动时超时,但下一次尝试很可能会成功。 Dockerization 可能会降低您的性能,但不会降低太多。即使设置最少,无头 Chrome 也应该 运行 很快。
如果您的浏览器无法安装或无法寻址,那么也应该有一些与此相关的输出。
你好,我是这样解决这个问题的:
在我的例子中,客户端有一个代理拦截器来管理网络配置。所以我在 customLauncher 标志中提供了代理作为服务器并且工作得很好,但只在管道中,本地测试停止了。但它只是取消了 运行 在本地的代理。
之前:这种方式在本地测试 运行s,但在 jenkins 管道中不起作用(npm 运行 测试)
browsers: ['MyChromeHeadless'],
customLaunchers: {
MyChromeHeadless: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--proxy-auto-detect'
]
}
}
之后:通过这种方式测试 运行s 在管道中,但在本地不起作用,因为我不在客户端网络下,可以访问提供的代理,如果是的话,应该可以工作。
browsers: ['MyChromeHeadless'],
customLaunchers: {
MyChromeHeadless: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--proxy-bypass-list=*',
'--proxy-server=http://proxy.your.company'
]
}
}
我们遇到了同样的问题,并通过在 karma.config.js
中添加以下标记解决了该问题
headlessChrome: {
base: "ChromeHeadless",
flags: [
"--no-sandbox",
"--no-proxy-server",
"--disable-web-security",
"--disable-gpu",
"--js-flags=--max-old-space-size=8196", // THIS LINE FIXED IT!!!
],
所以我正在尝试 运行 使用 GitLab CI 的管道在 Centos 7.5 的 docker 图像上对 Angular 6 应用程序进行 Karma 测试。
问题是
30 08 2018 07:09:55.222:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing. 30 08 2018 07:09:55.244:INFO [launcher]: Trying to start ChromeHeadless again (1/2). 30 08 2018 07:10:55.264:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing. 30 08 2018 07:10:55.277:INFO [launcher]: Trying to start ChromeHeadless again (2/2). 30 08 2018 07:11:55.339:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing. 30 08 2018 07:11:55.355:ERROR [launcher]: ChromeHeadless failed 2 times (timeout). Giving up. ERROR: Job failed: exit code 1
我运行测试ng test --browsers ChromeHeadlessNoSandbox --watch=false --code-coverage
业力会议:
browsers: ['Chrome', 'ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-gpu',
'--remote-debugging-port=9222',
],
},
},
还有图像上的 docker 文件我安装了最新的 chrome 稳定版:
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
RUN yum -y localinstall google-chrome-stable_current_x86_64.rpm && yum clean all
你知道它为什么会超时吗?在本地环境中,它 运行 完美。
我已经解决了同样的问题。我的测试服在我的本地机器上运行完美,但是当 运行 这些测试在 docker 容器中时,由于连接超时而失败。 (我也在使用 Gitlab runner,我的 docker 图片是基于 circleci/node:8.9.2-browsers
)
调查此问题后,我发现 docker 文件中缺少 chrome bin 变量路径。所以我通过添加解决了这个问题:
export CHROME_BIN=/usr/bin/google-chrome
到我的 .gitlab-ci.yml 在 before_script
# TESTING
unit_test_client:
stage: test
before_script:
- export CHROME_BIN=/usr/bin/google-chrome
script:
- npm run test:client
您也可以通过设置 CHROME_BIN 来解决您的问题
process.env.CHROME_BIN='/usr/bin/google-chrome'
在你的业力配置文件的顶部。
在这种情况下,你需要处理你是运行本地机器测试的情况,可能它应该匹配相同的chrome路径
您可能想在 Karma 尝试启动浏览器之前检查控制台输出。当我的 Angular 应用程序中存在无效的导入路径时,我因持续超时而卡住了数小时。 Karma 在控制台中打印此类错误,但继续启动浏览器,就好像这些错误无关紧要一样。这有点误导,但在指责浏览器之前值得检查。
其次,机器性能:偶尔你可能会在第一次尝试启动时超时,但下一次尝试很可能会成功。 Dockerization 可能会降低您的性能,但不会降低太多。即使设置最少,无头 Chrome 也应该 运行 很快。
如果您的浏览器无法安装或无法寻址,那么也应该有一些与此相关的输出。
你好,我是这样解决这个问题的:
在我的例子中,客户端有一个代理拦截器来管理网络配置。所以我在 customLauncher 标志中提供了代理作为服务器并且工作得很好,但只在管道中,本地测试停止了。但它只是取消了 运行 在本地的代理。
之前:这种方式在本地测试 运行s,但在 jenkins 管道中不起作用(npm 运行 测试)
browsers: ['MyChromeHeadless'],
customLaunchers: {
MyChromeHeadless: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--proxy-auto-detect'
]
}
}
之后:通过这种方式测试 运行s 在管道中,但在本地不起作用,因为我不在客户端网络下,可以访问提供的代理,如果是的话,应该可以工作。
browsers: ['MyChromeHeadless'],
customLaunchers: {
MyChromeHeadless: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--proxy-bypass-list=*',
'--proxy-server=http://proxy.your.company'
]
}
}
我们遇到了同样的问题,并通过在 karma.config.js
中添加以下标记解决了该问题headlessChrome: {
base: "ChromeHeadless",
flags: [
"--no-sandbox",
"--no-proxy-server",
"--disable-web-security",
"--disable-gpu",
"--js-flags=--max-old-space-size=8196", // THIS LINE FIXED IT!!!
],