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)

Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker
容器。image 文件可以看作是容器的模板。
image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说, 为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制, 也应该基于别人的 image 文件进行加工,而不是从零开始制作。通常可以通过docker file来构造image镜像。
比喻:汽车图纸
 

容器(Container)

Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例,容器是可以修改的,可以将容器当前的状态保存到对应的镜像中。
比喻:汽车
 

仓库(Respository)

Docker 仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行, 但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务, Docker Registry (仓库注册服务器)就是这样的服务
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签, 将以 latest 作为默认标签。
比喻:图纸档案室
 

共有仓库和私有仓库

Docker Registry 公有仓库是开放给用户使用、允许用户管理镜像的 Registry 服务。
一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry
比喻:公司档案室和部门档案室
 

各组件的关系

docker环境部署

  Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
  Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为
  2.6.32-431 或者更高版本。
 

下面我们开始进行安装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配置从节点:

配置节点的环境变量
第一步:点击系统管理进入管理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 查看是否配置成功:

发送自动化测试报告:

下载插件 Email Extension 【插件管理中下载】

 

 进入系统管理 - 》 系统配置 -》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报告:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-09-27 03:33  小赤佬091  阅读(463)  评论(0编辑  收藏  举报