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

bjg7j2ky  于 2023-10-17  发布在  Jenkins
关注(0)|答案(3)|浏览(153)

我有一个maven项目,我部署到一个jenkins服务器,我想运行代码覆盖率报告我的AngularJS代码。我让jenkins在我的本地机器上安装了一个服务,当我构建我的项目时,我的测试就在那里运行。
测试通过得很好,但是当我尝试在我的生产服务器上构建时,构建在尝试运行我的测试时失败,并在这里抛出此错误(我只是复制了错误的有害程序)

[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]

我对它的研究展示了如何设置这个变量,如果你在本地机器上,顺便说一句,我不必这样做。我想知道是否有人可以帮助我配置这个。
我如何设置这个变量来产生类似于在本地机器上设置它的东西?

更多信息:正如该错误所示,我的项目使用grunt来运行测试。

谢谢

zengzsys

zengzsys1#

您可以使用EnvInject plugin,也可以将export CHROME_BIN=/your/path/here放入.bash_profile中,并在作业开始时运行source ~/.bash_profile

j7dteeu8

j7dteeu82#

docker run命令通过-env-file标志接受env文件。
因此,您可以添加一个新的env文件,

CHROME_BIN=/usr/bin/google-chrome

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

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

参考这里的官方文档
通过这种方式,我们不只是为了设置env变量。

jjhzyzn0

jjhzyzn03#

我发现解决这个问题最简单的方法是让我的CI系统在the pre-built Puppeteer docker images中运行karma命令。
例如,在我的CI yaml配置文件中,我把:

image: ghcr.io/puppeteer/puppeteer:19.4.1

我发现这个版本是the latest Dockerfile that uses Node v16匹配我们的项目版本。

相关问题