CentOS下Jenkins+allure+pytest+sendEmail

实验环境:腾讯云服务器2C4G(可自备虚拟机1C1G也可以)

整体环境图

Jenkins安装

  1. 下载安装包 https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/

  2. 此次是下载Jenkins2.346版本,再高的版本就需要升级jdk版本了(文章此处用的jdk8)

  3. 安装

    1
    rpm -ivh jenkins-2.346-1.1.noarch.rpm 
  4. 修改

    1
    2
    3
    4
    vim /etc/sysconfig/jenkins
    # 修改内容
    JENKINS_USER="root"
    # 端口可以默认8080,看自己
  5. 启动(默认8080)

    1
    2
    3
    4
    5
    6
    # 启动
    systemctl start jenkins.service
    # 关闭
    systemctl stop jenkins.service
    # 重新启动
    systemctl restart jenkins.service
  6. 关闭防火墙(云服务器即使关闭,也要在安全组内开放此端口比如8080)

    1
    2
    3
    4
    5
    # 关闭
    systemctl stop firewalld.service
    # 永久关闭
    systemctl disable firewalld.service
    获取初识登录密码
  7. 访问(推荐插件选项)

    输入地址

  8. 获取初始登录密码

    1
    2
    cat /var/lib/jenkins/secrets/initialAdminPassword
    # 回车即可看到密码

    输入密码

  9. 安装插件(这里用的是推荐的插件选项)

    推荐插件

  10. 等待插件安装完毕

  11. 创建用户

    创建用户

  12. 实例配置不用改动,直接点【保存完成】

  13. 开始使用jenkins

管理用户配置设置(设置用户密码)(踩坑记录)

  1. 打开系统管理-全局安全配置

    系统管理

  2. 安全域改为【Jenkins专有用户数据库】

    选项更改

  3. 回到系统管理界面,此时会出现【管理用户】选项,更改admin的密码(建议再改一次)【此处踩坑,之前进入系统时设置的密码,退出重新登录报密码错误,不得已去掉密码登录配置进入界面重新设置密码才解决】可参考https://blog.csdn.net/wx17343624830/article/details/127863975

    管理用户

  4. 修改密码保存

    修改密码

  5. 以上完毕之后,再次进入【系统管理】-【全局安全配置】-【授权策略】,更改为【登录用户可以做任何事】

  6. 保存后会强行进入登录界面,按照之前设置好的密码登录就行

插件安装

  1. 进入系统管理-插件管理,在可安装搜索allure和email进行安装

    allure

    email

  2. 以上插件勾选,选择安装并重启

Python环境

  1. 下载安装包(个人推荐3.8.7)https://www.python.org/downloads/

  2. 上传服务器指定位置,哥们这边传到/usr/local/python3下面

  3. 解压文件

    1
    tar -zxvf Python-3.8.7.tgz
  4. 编译安装

    1
    2
    3
    4
    5
    6
    # 1. 输入
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
    # 2. 进入解压好后的安装包内
    ./configure --prefix=/usr/local/python3
    # 3. 上面完成之后继续输入 make,等待编译好,再输入make install等待安装完成
    make && make install
  5. 配置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 1.在安装的文件夹下,进入bin目录,创建python3软连接到系统环境变量中
    ln -s /usr/local/python3/bin/python3.8 /usr/local/bin/python3
    # 2.再设置pip3链接
    ln -s /usr/local/python3/bin/pip3.8 /usr/local/bin/pip3
    # 3.配置系统环境变量
    vim /etc/profile
    # 4.加入变量
    export PYTHON_HOME=/usr/local/python3
    export PATH=$PYTHON_HOME/bin:$PATH
    # 5.使环境生效
    source /etc/profile
  6. 查看是否安装成功

    1
    2
    3
    # 6.查看版本  
    python3 -V
    # Python 3.8.7

    可参考https://www.cnblogs.com/mindtechnist/p/17243882.html

Git环境

  1. 下载安装包https://git-scm.com/download/win

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27


    # 1. 解压安装包:
    tar -zxvf git-2.22.0.tar.gz

    # 2.进入解压后的文件夹:
    cd git-2.22.0

    # 3.安装 需要的依赖
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

    # 4.编译git源码:
    make prefix=/usr/local/git all

    # 5.安装git至/usr/local/git路径
    make prefix=/usr/local/git install

    # 6.配置环境变量
    vim /etc/profile
    export PATH=$PATH:/usr/local/git/bin

    # 7.使配置文件生效
    source /etc/profile

    # 8.查看git是版本
    git --version
    # git version 2.22.0

JDK(java)环境

  1. 下载安装包(这里安装的jdk8)https://www.oracle.com/java/technologies/downloads/#java8

  2. 新建/usr/java文件夹,将jdk-xx.tar.gz放到该文件夹下,并切换到/usr/java目录下

  3. 执行命令tar -zxvf jdk-xx.tar.gz进行解压缩,解压后/usr/java目录下多了jdk xx文件夹

    配置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 1. 执行  vim /etc/profile 编辑
    # 2. 在 /etc/profile底部加入下面内容
    JAVA_HOME=/usr/java/jdk1.8.0_271 # 上面第2步解压出来的文件夹
    JRE_HOME=$JAVA_HOME/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export JAVA_HOME JRE_HOME PATH CLASSPATH

    # 3. 配置完成后 执行以下命令,让配置文件生效
    source /etc/profile
  4. 查看是否安装成功

    1
    2
    3
    4
    5
    java -version
    # 出现版本号如下面,即为成功
    java version "1.8.0_271"
    Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode

Job构建

邮件预先设置

  1. 进入系统管理-系统配置,按照下面图片配置

  2. 邮件内容模板

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <!DOCTYPE html>    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
    </head>

    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
    <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
    <tr>
    本邮件由系统自动发出,无需回复!<br/>
    各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
    <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>
    </tr>
    <tr>
    <td><br />
    <b><font color="#0B610B">构建信息</font></b>
    <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
    <td>
    <ul>
    <li>项目名称 : ${PROJECT_NAME}</li>
    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
    <li>触发原因: ${CAUSE}</li>
    <li>构建状态: ${BUILD_STATUS}</li>
    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
    <li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
    <li>测试报告: <a href="${PROJECT_URL}allure">${PROJECT_URL}allure</a></li>
    </ul>

    <h4><font color="#0B610B">失败用例</font></h4>
    <hr size="2" width="100%" />
    $FAILED_TESTS<br/>

    <h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
    <hr size="2" width="100%" />
    <ul>
    ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
    </ul>
    详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

    </td>
    </tr>
    </table>
    </body>
    </html>

  3. 邮件通知配置

    邮件通知

  4. 最后点击保存

全局工具配置

JDK

  1. 这里选择的是机器上面jdk安装的位置()

    1
    2
    3
    whereis java
    # 查看位置 不带bin
    # 例如/usr/java/jdk1.8.0_271/bin/java 填入的位置就是/usr/java/jdk1.8.0_271

  2. 也可以选择自动安装

Git

  1. 这里选择的是机器上面git安装的位置

    1
    2
    3
    whereis git
    # 查看位置 带bin下面的git
    # /usr/local/git/bin/git

  2. 也可以选择自动安装

Allure Commandline

  1. 这里选择的自动安装,选择版本

创建job

  1. 首页-新建任务-输入名称-构建自由风格

源码管理配置

  1. URL配置

  2. gitee账号配置

  3. 个人用的是账号密码配置(默认类型),【类型】那里有多种配置,有SSH 和私钥配置,方式自己定义能连上就好

  4. 配置完以后选择自己配置的账号,一般不报红就算成功了

构建触发器-定时构建

构建

1
2
3
4
5
6
# 1.事先在jenkins目录下创建一个python虚拟环境管理
cd /var/lib/jenkins
mkdir pythonVenv
cd pythonVenv
python3 -m venv apiAuto
# 执行完上面的命令在pythonVenv目录下即可看到apiAuto的环境文件夹

构建后操作

Allure报告

  1. path位置要与构建最后一行的目录 ${WORKSPACE}/路径保持一致

邮件通知

  1. Triggers配置

    Attach Build Log 选择 Attach Build Log

    如果构建完之后没有收到邮件,将上图中的Send To内的两个选项调换位置重试下就可以(亲测)

运行job

点击名称-进入

日志查看

  1. 上图中的构建历史处点击去-控制台输出-查看日志输出(失败或者成功可以查看原因)

邮件查看

  1. 查看邮件

报告查看

  1. 点击测试报告或者构建历史中查看

———以上是【接口自动化】的——————–

UI自动化

  1. 安装Linux版Chrome浏览器

    1
    2
    3
    4
    5
    6
    7
    8
    # 1.下载rpm安装包https://www.chromedownloads.net/chrome64linux-stable/
    # 2.上传至服务器
    # 3. 安装
    rpm -ivh google-chrome-stable-xxxxxx.x86_64.rpm
    # 4. 如果提示缺少依赖 安装相应依赖(具体可百度)
    # 5. 查看是否安装成功 显示google-chrome-stable-xxxx.x86_64 即为成功
    rpm -q google-chrome-stable

  2. 安装相对应的ChromeDriver

    1
    2
    3
    4
    5
    6
    7
    8
    # 1.下载驱动 http://chromedriver.storage.googleapis.com/index.html  大版本保持一致即可
    # 2.上传服务器 解压
    unzip chromedriver_linux64.zip
    # 3. 拷贝一份解压出来的chromedriver到/usr/bin 目录下
    cp chromedriver /usr/bin/
    # 4. 进入/usr/bin 执行
    ./chromedriver
    # 5. 显示 Starting ChromeDriver 110.0.5481.77xxxxx环境成功
  3. 测试脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options

    chrome_options = Options()
    chrome_options.add_argument('--headless') # 使用无头模式执行chrome
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox') # 这个一定要加,不加Chrome启动报错
    # 这里chromedriver的路径,写你的对应路径,最方便就是放在同一个路径,也可以配置环境变量。
    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.get("https://www.baidu.com")
    print(driver.page_source)
    print(driver.title)
    driver.quit()

    创建测试文件

    1
    2
    3
    4
    5
    touch test_se.py
    vim test_se.py
    # 粘贴测试代码
    # 运行脚本
    python test_se.py

    出现结果为成功

  4. 剩余构建和接口自动化一致(前提上面ui环境准备好)