我有一个部署到 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
来运行测试。
谢谢你。
您可以使用 EnvInject 插件 或将
export CHROME_BIN=/your/path/here
放入 .bash_profile 并在工作开始时运行 source ~/.bash_profile
。
docker run 命令通过
-env-file
标志接受 env 文件。
因此,您可以使用以下内容添加新的 env 文件
CHROME_BIN=/usr/bin/google-chrome
并将此文件传递给 docker run 命令
docker run --env-file ./env.list -t -d ${BUILD_NAME}
参考这里获取官方文档
这样,我们就不会仅仅为了设置环境变量而进行操纵。
我发现解决这个问题的最简单方法是让我的 CI 系统在
预构建的 Puppeteer docker 镜像之一中运行
karma
命令。
例如在我的 CI yaml 配置文件中我放入:
image: ghcr.io/puppeteer/puppeteer:19.4.1
我发现这个版本是使用 Node v16 的最新 Dockerfile 来匹配我们的项目版本。