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

Posted

技术标签:

【中文标题】部署到生产以进行角度测试覆盖时如何在 jenkins 中设置 CHROME_BIN【英文标题】:How to set CHROME_BIN in jenkins when deploying to production for angular test coverage 【发布时间】:2017-09-09 21:17:11 【问题描述】:

我有一个部署到 jenkins 服务器的 maven 项目,我想在那里为我的 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] 

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

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

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

谢谢。

【问题讨论】:

【参考方案1】:

docker run 命令通过 -env-file 标志接受 env 文件。

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

CHROME_BIN=/usr/bin/google-chrome

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

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

请参考here 获取官方文档

这样,我们不只是为了设置 env 变量而操纵。

【讨论】:

【参考方案2】:

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

【讨论】:

我已经安装了。但我不明白如何提供通往 chrome bin 的路径。我已经安装了ChromeDirver 认为这会解决它,但没有。在本地机器上你可以使用CHROME_BIN=/usr/local/bin/my-chrome-build之类的路径,但我不知道如何在jenkins服务器上重现它。 this document 中有一个部分称为At Job Level > Inject variables after a SCM checkout。只需将CHROME_BIN=/usr/local/bin/my-chrome-build 放入Properties Content 即可。 我试过了,但使用了各种版本的路径,但没有运气。我想我可能错过了什么,但我不知道是什么。我正在继续测试设置为 CHROME_BIN 变量的各种路径,看看我是否掌握了它并继续前进。 那个位置真的有东西吗?你是在别的地方安装的吗?此外,您可以在您的工作中添加一个与CHROME_BIN 相呼应的步骤,以确认它正在被设置。如果它被设置,你的路径可能是错误的。 我相信这是你的问题。 ChromeDriver 是用于 Selenium 测试的 Web 驱动程序。根据我的阅读,您需要在用于 Jenkins 服务器的 Linux 机器上安装 Chrome 浏览器。来自 Karma GitHub 存储库的第一行:A simple tool that allows you to execute javascript code in multiple real browsers.。这意味着您需要在系统上安装浏览器,就像您需要在本地 Windows 系统上安装浏览器一样。

以上是关于部署到生产以进行角度测试覆盖时如何在 jenkins 中设置 CHROME_BIN的主要内容,如果未能解决你的问题,请参考以下文章

使用 jenkins 进行持续部署

基于Jenkins持续集成CI

如何仅使用主 git 分支在 Jenkins 中使我的项目自动从开发部署到登台并手动部署到生产

Jenkins使用FTP进行一键部署及回滚(Windows)

jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

jenkins持续集成--看我如何从1到代码自动部署