如何使用 gitlab CI 解决 Angular 业力测试的 chrome 错误?
Posted
技术标签:
【中文标题】如何使用 gitlab CI 解决 Angular 业力测试的 chrome 错误?【英文标题】:Ho do I solve chrome error for karma tests for Angular with gitlab CI? 【发布时间】:2021-04-17 18:18:20 【问题描述】:我尝试使用 gitlab CI 为 Angular 运行业力测试。
.gitlab-ci.yml:
image: node:14.0.0
cache:
paths:
- node_modules/
before_script:
- npm install
- apt-get update -qq
- apt-get install -y -qq rsync
- apt-get install -y -qq sshpass
- wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- apt install ./google-chrome-stable_current_amd64.deb -y
stages:
- testing_deploy
build_and_deploy_testing:
stage: testing_deploy
script:
- echo "============== ADD DEVELOP SSH KEY =============="
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- echo "============== START BUILD AND DEPLOY TESTING =============="
- ./node_modules/@angular/cli/bin/ng test --progress false --watch=false
我收到一条失败的作业消息:
12 01 2021 16:25:31.828:ERROR [launcher]: Cannot start Chrome
[2172:2172:0112/162531.552480:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
12 01 2021 16:25:31.829:ERROR [launcher]: Chrome stdout:
12 01 2021 16:25:31.829:ERROR [launcher]: Chrome stderr: [2172:2172:0112/162531.552480:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
12 01 2021 16:25:31.840:ERROR [launcher]: Chrome failed 2 times (cannot start). Giving up.
Cleaning up file based variables
ERROR: Job failed: exit code 1
如何解决错误:zygote_host_impl_linux.cc 不支持以 root 身份运行而没有 --no-sandbox?
【问题讨论】:
【参考方案1】:使用 Docker 执行器时,容器以镜像创建者定义的任何用户身份运行,几乎总是root
; gitlab runner 不会将用户设置为root
。有人要求在步骤配置中进行配置,但维护人员指出,您可以根据需要的图像创建自定义图像。
例如,假设为图像mysql:8
定义的用户是root
,但我需要以mysql
用户身份运行某些东西。这是一个 Dockerfile 示例:
FROM mysql:8
USER mysql
这个镜像是建立在mysql:8
之上的,但是我们改变了它运行的用户。您可以通过运行docker build mysql_custom_image
来构建映像。如果成功,在输出的最后你会得到类似Successfully built h47841j5285
的东西。然后你可以给它起一个更友好的名字:docker tag h47841j5285 my_org/mysql_custom_image
。
如果您使用的是 Gitlab 的内置注册表,则可以将其推送到那里或 hub.docker.com。如果没有,您可以将 Dockerfile 复制到您的运行器并在每个运行器上构建它。
您的新 .gitlab-ci.yml 文件如下所示:
image: my_org/mysql_custom_image
...
【讨论】:
以上是关于如何使用 gitlab CI 解决 Angular 业力测试的 chrome 错误?的主要内容,如果未能解决你的问题,请参考以下文章