==========================================================================================================
写在前面:
据不完全统计,上次编写Linux环境下的jenkins部署还是在2018年左右的时候,那时候刚好项目上有个空档期,就通过自学,想将windows下
的jenkins迁移到linux下去,当时也是因为其他项目的插入和测试资源的紧张,导致这个的优先级一直在降低。
最近刚好团队里面进来新成员,把大部分测试工作转接给新同事,可以抽出时间来再研究Linux下的Jenkins持续化部署,只能说之前不着急,
是因为没有强烈的需求,现在想着急了,是因为团队不断的变大,业务范围也在不断的扩大,人员有限的情况下,想最大限度的提高测试的效率。
来吧,就一起继续学习和部署Linux下Jenkins的CICD持续化集成。
==========================================================================================================
和上次搭建Linux环境不同的是,本次打算部署到公司级的Linux环境下,所以事先和运维部门的同事提前打好招呼,让他帮忙构建一个jenkins的环境。
自动化测试的jenkins运维一个月以前已经帮我创建好了,一直由于其他事情忙着,所以没能展开,终于在年前两个星期开始着手做了,不容易啊。
第0步:盘点
1、需要自动化部署的jenkins部署环境=》联系运维申请机器
2、梳理可部署的自动化测试代码和功能
3、创建jenkins自动化任务,修改代码的Linux下兼容性
4、编译运行,可持续化交付测试
第1步:Linux下机器已申请的情况下,创建任务
配置文件中:
(1) 必须选中【限制项目的运行节点】,将标签表达式设置为【jks-auto-test1】
(2) 源码管理,选中git,用户用默认的jenkins(只更新,不提交)
(3) 构建触发器和构建环境
(4) 编译设置等
第2步:编译,运行,遇到问题解决问题
Linux服务器下遇到的问题:
(1) ChromeDriver.exe在Linux服务器下不支持,需要下载ChromeDriver的shell文件。
解决方案:
1、 运维人员下载ChromeDriver放到系统目录下,这样直接调用ChromeDriver就可以直接执行
2、 测试人员在写代码的过程中,将路径指定到ChromeDriver的路径下
3、 需要运维同学将chromedriver修改为可执行的777权限。
String OS = System.getProperty("os.name").toLowerCase(); if (OS.indexOf("linux") >= 0) { System.setProperty(CommonConstants.CHROME_DRIVER_FIELD, CommonConstants.CHROME_DRIVER_SERVER_LINUX); logger.info("----- 当前系统是Linux系统.-----"); } else { System.setProperty(CommonConstants.CHROME_DRIVER_FIELD, CommonConstants.CHROME_DRIVER_SERVER); logger.info("----- 当前系统是Windows系统.-----"); ChromeOptions options = new ChromeOptions(); // set agruments not to display"data;" options.addArguments("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/UserData/Default");
(2) 发送测试结果邮件
该问题待解决中
(3) 需要运维安装的依赖包:
问题点:
第一回:
chromedriver: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
第二回:
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 3.10.0-1127.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 150 milliseconds
解决方案:
Selenium的包安装
该问题已经解决,通过调用运维部署的chromedriver和Chrome浏览器,屏蔽掉本地的浏览器解决的。
版本:87
(4)报错1:
[org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
[2021-01-12 13:38:05:456] [ringnode.qa.autotest.ui.framework.webdriverfactory.ChromeBrowserDriver] [ERROR] [85] [org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
解决方案:
https://blog.csdn.net/daocaoren92wq/article/details/80155595
The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
(5)2021/1/13报错内容2:
[2021-01-13 09:13:04:165] [ringnode.qa.autotest.ui.framework.webdriverfactory.ChromeBrowserDriver] [ERROR] [99] [java.lang.IllegalStateException: The driver executable does not exist: /user/local/bin/chromedriver]
org.openqa.selenium.WebDriverException: unknown error: no chrome binary at /user/local/bin/chromedriver
解决方案:
Selenium的包安装
该问题已经解决,通过调用运维部署的chromedriver和Chrome浏览器,屏蔽掉本地的浏览器解决的。
版本:87
(6)报错3:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.]
java.awt.HeadlessException:
https://blog.csdn.net/superch0054/article/details/9719217
解决方案:
https://www.cnblogs.com/ycyzharry/p/11432698.html
https://blog.csdn.net/douglas8287/article/details/84857113
剩下的问题不是特别多,能保证在Linux下跑起来,根据自身业务的不同,再进行调整