基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)

上篇讲了环境安装步骤,这里接着讲一讲jenkins配置

上篇地址:基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(上)

一、 安装第三方插件

在jenkins插件管理依次搜索安装下面的两个插件,安装完后重启jenkins

allure插件----出报告

gitlab插件----触发构建,拉取代码

二、 配置JDK、git、allure路径

1.点击global tool configuration

2.JDK:不选择自动安装,需要填入安装路径即可,别名JAVA_HOME,路径/usr/local/openjdk-8(是容器内部的jdk,不是宿主机里的)

3.git路径:/usr/bin/git

4.设置allure地址:在全局工具配置找到allure commandline,点增加,别名写allure,上篇已经安装里,所以这里取消勾选自动安装,放入allure安装路径

三、 新建item

选择自由风格,点确定,点击构建空跑一次,刷新,会在宿主机挂载目录下出现workspace目录,点击工作空间进去就是jenkins项目目录(新建的item名),如果jenkins里创建了好几个项目,这里会展示好几个项目目录,把自动化代码放在项目目录下,此时容器内部也会有项目的代码(因为是挂载目录)

基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第1张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第2张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第3张图片

四、配置构建

在项目下点击配置,在构建里选执行shell。(当前目录是在jenkins项目下,注意,当前在哪个jenkins项目下面,当前路径就在哪个目录下),所以先cd python项目目录/testcase,pytest -s,就可以跑python项目

基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第4张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第5张图片

五、配置allure报告

1、进入项目->点配置->点击构建后操作->选allure report

2、在shell里修改pytest -s --alluredir=${WORKSPACE}/allure-results

理解:allure应用回到results:path中读取结果json文件,默认值是allure-results,所以生成报告的命令要把json结果生成到这个默认值路径里。${WORKSPACE}是jenkins全局变量(注意是大写),代表jenkins工程目录,这里指test1,这条命令执行完后会执行构建后操作,allure会到allure-results目录下找json文件生成报告。allure-results目录会自己生成,不用提前自己创建,如果控制台提示allure-results目录找不到,说明pytest -s那条指令执行的不合适,所以没生成这个目录。执行完成后,allure-results目录和python项目将都在jenkins工程下面,同一级,如下面第二张图所示

基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第6张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第7张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第8张图片

六、 配置邮件(以163邮箱为例)

  1. 测试下邮件的基本设置是否是通的

  1. 在面板选择系统配置,找到系统管理员邮件地址,填入(是发件人邮件地址),Jenkins URL可以不动,前提是静态IP

  1. 找到Extended E-mail Notification,SMTP server填smtp.163.comii) 找到Extended E-mail Notification,SMTP server填smtp.163.com,如果是虚拟机操作,SMTP port默认25不用改,点击高级,smtp username写上邮箱地址(同管理员地址),smtp password填入邮箱授权码,使用凭证处选择刚刚用用户名密码生成的凭证(默认还是空的),default user e-mail suffix填入@163.com,default content type选择HTML(text/html)

  1. 找到邮件通知,SMTP服务器填入smtp.163.com,用户默认邮件后缀写@163.com,选择高级,勾选使用SMTP认证,输入用户名密码(发件人地址和授权码),不要勾选SSL(同第二步),SMTP端口写25,勾选通过发送测试邮件配置,测试下发邮件功能是否通了,如果可以收到jenkins发来的邮件,说明通了,jenkins是可以往外发邮件的,点击保存

  1. 进入项目,点击配置,构建后操作,增加构建后操作步骤,选Editable Email Notification,project from输入发件人地址,project recipient list输入收件人列表,不要加逗号,换行,添加多个收件人,content type选择html格式,default content复制粘贴模版(在下面附上),attach build log选择attach build log,默认选的是没有构建日志,选择高级设置,触发器改成always

以下是Jenkins自动发送的邮件,请勿回复!




项目描述:${JOB_DESCRIPTION}


项目名称:$PROJECT_NAME
构建编号:$BUILD_NUMBER
构建状态:$BUILD_STATUS
触发原因:${CAUSE}
系统allure测试报告:${PROJECT_URL}${BUILD_NUMBER}/allure

基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第9张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第10张图片

七、gitlab关联jenkins

1、 在gitlab选择顶上小扳手->选择settings->选择第三个选项outbound requests,点expand->勾选第一个,allow requests to the local network from web hooks and services->点击save changes

2、 在gitlab点击project,选择需要与jenkins关联的项目->选择settings->选择webhooks->配置jenkins的url和secret token(在第三步复制)(目的是gitlab可以操作jenkins),trigger方式有很多,保持默认的push events推送事件(也可以选择多个条件触发),只要gitlab发生了推送事件,自己会起jenkins跑jenkins对应的工程(自动化项目),除了webhook触发,还有一种触发方式是定时触发,触发器有很多种

3、 进入jenkins对应的工程,构建触发器的第四个gitlab webhook url值,复制到第二步,勾选第四个,进入二级页面,点高级有个生成secret token的操作,点generate,复制token到第二步。选择配置->源码管理选git

4、 在gitlab第二步的页面,最下面,点击test,选择push events,测试下是否打通了,可以看到gitlab当前页面出现http 200,去jenkins对应的项目,会新出现一次构建记录,说明gitlab可以通过webhook操作jenkins,打通了一边,下面配置jenkins

5、 在jenkins对应项目点击配置->找到源码管理,输入对应的gitlab远程仓库地址(clone with http),注意要加上端口号9000-在credentials点击添加,类型选择username with password->用户名是root,密码是gitlab的密码,点击添加->在credentials第一个选择栏选择刚刚添加的用户名和密码,点击保存

6、 jenkins的挂载目录在/var/jenkins_node目录下,远程连接进入这个目录,是空的,所以容器里也没有,找到gitlab对应项目,点击settings->webhook,最下面测试下,看是否能拉取到容器里/挂载目录下,会看到出现http 200,jenkins出现新一次构建,且到挂载目录下可以看到项目文件夹,说明jenkins可以拉取gitlab代码,另一边通了

7、 完整的验证下通路:在pycharm改代码,def test_xxx,断言成功,并push到远程,可以看到jenkins会自动构建并且用例数比之前多一条,至此完成了全通路自动化执行

八、 进一步完善

1、allure报告完善

问题:在allure报告可以看到environment里没有环境变量,缺项目描述

解决办法:新建environment.propertites文件,写入浏览器种类、浏览器版本、python版本、APIURL等信息,这个文件只有allure生成报告时才会去读,而此处的报告是jenkins调用allure通过allure-results目录来生成,所以要把这个文件放到allure-results目录下,但是一般会每次清空allure-results的信息,如果直接放进去那属性文件也会消失,所以将属性文件放在项目根目录下,每次在生成results后意味着allure-results文件也已经生成,进行一次copy,再次构建,可以看到allure报告里environment部分有项目信息,和环境属性文件里内容一样。

#environment.properties文件内容,可以自己创建
System=MAC
PythonVersion=3.8.5
AllureVersion=2.18.0
BaseUrl=http://xxxxxx:8081/
Project=apiProject
author=lw
[email protected]
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第11张图片
基于docker搭建jenkins+python3+pytest+allure+gitlab接口自动化测试CI环境(下)_第12张图片

2、jenkins时间同步

问题:在创建gitlab时有同步时间,而看jenkins构建记录,和当前真实时间对不上

解决方法:

1、首先看下宿主机时间对不对,输入date指令,发现时间不对
2、更新时间:ntpdate ntp1.aliyun.com(同步阿里云的时间)
3、再次用date验证宿主机当前时间(首先先保证宿主机时间正确,否则服务器容器以时间为准,肯定不对)
4、看下容器时间是否正确
    a.进入jenkins容器:docker exec -it jenkins1 /bin/bash
    b.输入date指令,发现时间也不对,exit退出容器
    c.把宿主机上海的时间同步copy到容器:docker cp  
      /usr/share/zoneinfo/Asia/Shanghai jenkins1:/etc/localtime
5、重启容器:docker restart jenkins1
6、进入jenkins1容器,再次输入date验证,发现当前时间正确
7、刷新jenkins,再次从jenkins构建,会看到构建时间年月日正确,但时分不对,是因为jenkins时区不对,没有进行配置,打开jenkins的系统管理->脚本命令行,在命令行输入System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai'),将时间时区设置为上海,点击运行,点运行两次,可以看到下面的结果Result是Asia/Shanghai即可
8、返回构建历史,可以看到已有的构建历史时分也对了

你可能感兴趣的:(持续集成jenkins,jenkins,docker,容器,python,gitlab)