部署到生产环境以进行角度测试覆盖时如何在 jenkins 中设置 CHROME_BIN

问题描述 投票:0回答:3

我有一个部署到 jenkins 服务器的 Maven 项目,我想在那里为我的 AngularJS 代码运行代码覆盖率报告。我在本地计算机上安装了詹金斯服务,并在构建项目时在那里运行测试。

测试顺利通过,但是当我尝试在生产服务器上构建时,构建在尝试运行测试时失败,并在此处抛出此错误(我刚刚复制了错误的害虫)

[INFO] --- frontend-maven-plugin:1.0:grunt (grunt-karma) @ forecast-guardian-4 ---
[INFO] Running 'grunt ' in /var/lib/jenkins/workspace/TaskName
[INFO] Running "karma:unit" (karma) task
ERROR [launcher]: [39mNo binary for Chrome browser on your platform.
[INFO]   Please, set "CHROME_BIN" env variable.
[INFO] 
[INFO] 
[INFO] 
[INFO] [33mWarning: Task "karma:unit" failed. Use --force to continue.[39m
[INFO] 
[INFO] [31mAborted due to warnings.[39m
[INFO] 

我对此的研究表明,如果您在本地计算机上,如何设置该变量,顺便说一句,我不必这样做。我想知道是否有人可以帮我配置这个。

如何设置此变量以生成类似于在本地计算机上设置它的here的内容?

更多信息:如该错误所示,我的项目使用

grunt
来运行测试。

谢谢你。

jenkins karma-runner karma-jasmine karma-coverage
3个回答
1
投票

您可以使用 EnvInject 插件 或将

export CHROME_BIN=/your/path/here
放入 .bash_profile 并在工作开始时运行
source ~/.bash_profile


0
投票

docker run 命令通过

 -env-file
标志接受 env 文件。

因此,您可以使用以下内容添加新的 env 文件

CHROME_BIN=/usr/bin/google-chrome

并将此文件传递给 docker run 命令

docker run --env-file ./env.list -t -d ${BUILD_NAME}

参考这里获取官方文档

这样,我们就不会仅仅为了设置环境变量而进行操纵。


0
投票

我发现解决这个问题的最简单方法是让我的 CI 系统在

预构建的 Puppeteer docker 镜像之一中运行
karma命令。

例如在我的 CI yaml 配置文件中我放入:

image: ghcr.io/puppeteer/puppeteer:19.4.1
我发现这个版本是

使用 Node v16 的最新 Dockerfile 来匹配我们的项目版本。

© www.soinside.com 2019 - 2024. All rights reserved.