python+allure+pytest+git+阿里云+Jenkins持续集成
环境搭建准备:阿里云服务器上搭建
1.docker
2.jenkins
3.python3.6.8【我的版本】
4.安装pytest ,allure_pytest
5.git
6.jdk
一、首先进行docker搭建[docker介绍]
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到 任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,且容器性能开销极低
docker vs 虚拟机 docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动 docker 需要的资源更少, docker 在操作系统级别进行虚拟化, docker 容器和内核交互,几乎 没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化 docker 更轻量, docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的 硬件环境, Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高 与虚拟机相比,docker 隔离性更弱,docker 属于进程之间的隔离,虚拟机可实现系统级别隔离
docker和虚拟机的对比:
镜像(Image)
容器(Container)
仓库(Respository)
共有仓库和私有仓库
各组件的关系
docker环境部署
下面我们开始进行安装docker
1、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2、设置国内的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
3、安装docker
yum install -y docker-ce
4、启动或关闭docker服务
systemctl start docker systemctl stop docker
docker常用命令
搜索镜像:
docker search {imageName}
拉取镜像:
docker pull {imageName}[:{imageTag}]
查看本地镜像:
docker images
运行容器:
docker run {imageId} -d:后台运行镜像 -t:启动一个终端 -i:标准输入 -p:容器内的端口映射到本机端口 -v:文件映射
查看运行中的docker:
docker ps
查看所有历史容器:
docker ps -a
查看docker容器日志:
docker logs [-f] {containerId}
进入容器:
docker exec -it {containerId} /bin/bash
docker拷贝文件:
docker cp {localPath} {containerId}:{containerPath}
启动/停止/重启已存在的容器:
docker start/stop/restart {containerId}
移除docker容器:
docker rm {containerId}(容器必须在停止状态才能移除)
删除镜像:
docker rmi {imageId} 如果使用 docker rmi {imageId} 无法删除,就进入下面目录进行删除: cd /var/lib/docker/image/overlay2/imagedb/content/sha256
导出docker镜像:
docker save -o kafka.tar wurstmeister/kafka
加载镜像:
Docker load -i
删除所有dangling数据卷(即无用的volume):
docker volume rm $(docker volume ls -qf dangling=true)
杀死所有正在运行的容器 :
docker kill $(docker ps -a -q)
删除所有已经停止的容器:
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像:
docker rmi $(docker images -q -f dangling=true)
删除所有镜像:
docker rmi $(docker images -q)
docker中搭建Jenkins
首先下载jenkins镜像地址:
1 https://hub.docker.com/r/jenkins/jenkins/tags 选择jenkins最新版本。如果jenkins版本太低的话,会导致很多插件安装不上,影响不必要的麻烦
直接使用 docker pull 拉取Jenkins镜像:
docker pull jenkins:latest
新建jenkins工作目录,用来做文件映射:
mkdir /home/jenkins
查看目录归属ID命令 ls -nd /home/jenkins ,这里查看ID是999:
[root@iZ2ze6cj54lr4sospd8gxfZ]# ls -nd /home/jenkins drwxr-xr-x 2 999 999 4096 Dec 27 12:30 /home/jenkins
给归属D为 999 的用户添加操作权限:
chown -R 999:999 /home/jenkins
运行容器:
下面【10241
:
10241
】为端口号可以随便设置:
docker run -itd -p 10241:10241 -p 50000:50000 --name jenkins -- privileged=true -v /home/jenkins:/var/jenkins_home jenkins:latest
docker下操作jenkins命令:
docker ps------查看正在运行的cotainners docker ps-a --------查看所有的containners docker restart 容器id docker logs -f +容器名 打印日志
使用:ip地址+ 端口号 访问Jenkins
注意:如果使用如上命令显示启动 Jenkins 成功,但是使用 【ip地址+ 端口号】访问此地址显示无法连接,需要进入阿里云服务后台查看对应配置端口号是否开放
启动jenkins
密码地址:/var/jenkins_home/secrets/initialAdminPassword
上面启动容器的时候容器 /var/jenkins_home 路径映射到宿主机 /home/jenkins,在宿主机的 /home/jenkins/secrets/initialAdminPassword 地址可以找到密码[root@iZ2ze6cj54lr4sospd8gxfZ /]# docker exec -it jenkins bash cat /var/jenkins_home/secrets/initialAdminPassword a1f6cedd9e564d40al729158429faa36e
进入到下载插件页面,默认选择安装推荐插件
注意: 如果显示404,直接重启Jenkins即可, Jenkins重启命令: 【docker restart 容器id】
docker restart e97b987a35d0
设置账号
插件下载完成后,设置admin账户和密码
安装python环境
Linux 版的 Python通常以源码编译的方式安装,到 Python官网下载 Python3。
Python官网下载地址:
https://www.python.org/downloads/source/
我下载为(Python-3.6.8)源码,如下图:
我是Windows电脑所以使用xshell连接服务器,使用 xftp 把文件上传到 /usr/目录下 Python-3.6.8.tar.xz
进行编译安装(安装到 /usr/python3 )
#解压源码包:解压到当前文件夹,得到Python-3.6.8文件夹。 sudo tar Jxvf Python-3.6.8.tar.xz # 创建安装目录 sudo mkdir /usr/python3 # 进入解压后的 源码文件夹 cd Python-3.6.8 # 配置, 检查安装环境, 生成 Makefile 文件, 指定安装到 /usr/python3 sudo ./configure --enable-optimizations --prefix=/usr/python3 # 编译和安装 sudo make && make install # 进入 python3 的 bin 目录 cd /usr/python3/bin # 查看 python3 的版本 ./python3 -V ./pip3 -V
添加 Python 环境变量:
1.打开全局环境变量配置文件 sudo vim /etc/profile
2.添加下面代码到/etc/profile配置文件,使用whereis python3 查找文件目录,把目录配置到环境变量中 export PATH=/usr/python3/bin:$PATH 3.执行 source 命令,让刚配置的环境变量立即生效 source /etc/profile 4.在任意目录下查看版本 python3 -V pip3 -V
安装 pytest 使用命令:
python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pytest
安装:allure-pytest
python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com allure-pytest
安装如下python第三方库:
# 安装pytest-rerunfailures python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pytest-rerunfailures
#安装pytest-ordering python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pytest-ordering
#安装requests python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com requests
#安装pyyaml python3 -m pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pyyaml
# 升级pip
python3 -m pip install --upgrade pip
命令行输入 pytest ,代码执行成功:
配置github:
下载:Git Parameter插件
参数化构建工程:
General- 参数化构建过程-添加参数-Git Parameter
步骤: 进入工程-》点击步骤-》勾选GitHub项目-》选择丢弃旧的构建
源码管理-》选择Git
点击参数化构建:
Jenkins配置从节点:
选择节点管理
选择新建节点:
填写节点名称:
配置节点:
通过SSH配置Linux宿主机为slave节点
下载插件:SSH Agent
启用SSH Server:
Jenkins- 系统管理 - 全局安全配置, 把 SSH Server 设置为启用(默认是禁用)
添加节点页面
名称 自定义一个节点名称 执行器数量 可以同时执行的job线程数,随便写个数字 远程工作目 宿主机上workspace目录 标签 自定义 用法 尽可能的使用这个节点 启动方式 Launch agent agents via SSH 主机 你自己的宿主机linux服务的ip Credentials 添加你的linux服务器远程访问的root账号和密码 Host Key Verification Strategy 这项选择Non verifying Verifcation Stragegy
添加成功后,是离线状态
启动代理节点 :点上面新增的节点启动代理
因为是linux需要在构建选择 执行shell,构建后操作填写自己脚本生成的allure报告地址
配置Allure Commandline:
配置 -》全局工具配置,别名随便取一个,勾选自动安装
服务器上配置allure环境变量:
进行解压:
unzip allure-commandline-2.7.0.zip
配置allure环境变量:
解压后allure下bin目录的路径,配置为环境变量
vim /etc/profile # 在PATH后追加以下内容,保存 export PATH=$PATH:/usr/local/allure-2.7.0/bin # 使环境变量生效 source /etc/profile
输入 allure --version 查看是否配置成功:
发送自动化测试报告:
进入系统管理 - 》 系统配置 -》Jenkins Location
进入系统管理 - 》 系统配置 -》Extended E-mail Notification
构建发送邮件模板:
模板如下:
Default Subject:
构建通知:$PROJECT_NAME - Build # BUILD_NUMBER - $BUILD_STATUS!
Default Content:
<!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>
进入系统管理 - 》 系统配置 -》邮件通知-》配置如下:
进入节点管理 -》 配置节点:
点击构建发送邮件结果如下:
点击测试报告url地址链接来查看allure报告: