zoukankan      html  css  js  c++  java
  • 【Linux】【Jenkins】Linux环境搭建和遇到的问题和解决方案等

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

        写在前面:

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

  • 相关阅读:
    jsonp的实现原理和缺点
    vue $set的使用初了解
    js将多维数组转换为一维数组
    微信小程序之页面打开数量限制
    ZOJ 1463 Brackets Sequence
    CSUOJ 1248 非变性聚丙烯酰胺凝胶电泳
    ZOJ 1524 Supermarket
    POJ 1012 Joseph
    ZOJ 1276 Optimal Array Multiplication Sequence
    POJ 1742 Coins
  • 原文地址:https://www.cnblogs.com/conquerorren/p/14452212.html
Copyright © 2011-2022 走看看