==========================================================================================================

    写在前面:

    据不完全统计,上次编写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下跑起来,根据自身业务的不同,再进行调整

posted on 2021-02-26 15:21  伊凡Ivan  阅读(424)  评论(0编辑  收藏  举报