微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 gitlab-runner 的 docker executor 运行 E2E 测试时崩溃并出现 spawn chromedriver ENOENT 错误

如何解决使用 gitlab-runner 的 docker executor 运行 E2E 测试时崩溃并出现 spawn chromedriver ENOENT 错误

我在量角器 (v7) 中有一个 e2e 测试项目,在 config.ts

中将 chrome 设置为目标浏览器
...
directConnect: true,multiCapabilities: [
    {
      browserName: 'chrome',chromeOptions: {
        args: ["--headless","--disable-gpu","--window-size=1920x1080","--no-sandBox"]
      }
    }
],...

通过带有 gitlab-runner exec shell run_tests 的 gitlab-runner 的 shell 执行器运行项目工作正常,但如果我通过 gitlab-runner 的 docker 执行器运行它,带有 gitlab-runner exec docker run_tests,它会在 yarn test cmd 上崩溃(基本上可以转换为 gitlab-ci 脚本的 protractor config.ts) 并带有以下日志:

protractor config.ts
[09:14:27] I/launcher - Running 1 instances of WebDriver
[09:14:27] I/direct - Using ChromeDriver directly...
[09:14:27] E/launcher - spawn /builds/project-0/node_modules/webdriver-manager/selenium/chromedriver_90.0.4430.24 ENOENT
[09:14:27] E/launcher - Error: spawn /builds/project-0/node_modules/webdriver-manager/selenium/chromedriver_90.0.4430.24 ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:249:19)
    at onErrorNT (internal/child_process.js:442:16)
    at processticksAndRejections (internal/process/task_queues.js:84:9)
[09:14:27] E/launcher - Process exited with error code 199
error Command Failed with exit code 199.

.gitlab-ci.yml 看起来像这样:

image: node:12.2.0-alpine

stages:
  - run

variables:
  SERVER_URL: "https://xyz.io/login"
  USER_1_USERNAME: "rico"

run_tests:
  stage: run
  script:
    - echo $SERVER_URL
    - echo $USER_1_USERNAME
    - yarn install:deps
    - yarn test

任何帮助将不胜感激。我在 ci 脚本中缺少 chrome 安装吗?

解决方法

所以,我的预感是对的,它基本上没有安装 google chrome,而且由于我使用的是 alpine docker 映像,因此安装 chrome 也是 no simple feat。因此,我不得不将我的 docker 映像更改为 node:<version>,这是基于 debian 的映像并包含 chrome 安装说明,使用来自 https://askubuntu.com/a/196100/1217294 的信息,仅排除 sudo(它们在一个 gitlab-runner 容器)并在 apt-get install 之后包含和 -y (绕过用户提示),并且它起作用了。这是我的 gitlab ci 脚本的样子:

image: node:12

stages:
  - run

run_tests:
  stage: run
  script:
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 
    - sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
    - apt-get update
    - apt-get install -y google-chrome-stable
    - yarn install:deps
    - yarn test

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。