将容器测试托管到Jenkins

设计思路

思路整理:

  1. 通过docker部署Jenkins

  2. 在Jenkins可以使用docker

  3. 自动化测试通过docker、docker-compose执行

  4. 测试后生成allure报告,在Jenkins中展示

难点:

  1. 如何在Jenkins执行docker指令

  2. 如何把容器中测试结果取回到Jenkins

1. 在Jenkins中执行docker

思路

方法一:在Jenkins中安装docker客户端,使用第三方的docker服务

方法二:在Jenkins中安装docker客户端,在另一个容器中安装docker服务

方法三:在Jenkins中不安装docker客户端,直接使用宿主机的docker

此处使用的处理方式是方法三

1. 添加启动参数

需要挂载的文件如下:

docker的客户端:/usr/bin/docker

docker客户端和服务端的通讯接口:/var/run/docker.sock

docker-compose:/usr/local/bin/docker-compose

启动Jenkins镜像:

XML 复制代码
docker run --name jenkins -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/docker-compose:/usr/bin/docker-compose -u root -p 8120:8080 -d jenkins/jenkins:jdk11

命令详解
docker run 
--name jenkins                       # 容器名
-v /usr/bin/docker:/usr/bin/docker   # 文件映射
-v /var/run/docker.sock:/var/run/docker.sock 
-v /usr/local/bin/docker-compose:/usr/bin/docker-compose  
-u root                              # -u参数表示运行者的身份
-p 8120:8080                         # 端口映射
-d                                   # 后台运行
jenkins/jenkins:jdk11

2. 进入Jenkins容器,验证可以执行docker

进入Jenkins容器

XML 复制代码
docker exec -it jenkins bash

执行docker指令,确认可以执行

XML 复制代码
docker image ls -a
docker-compose

2. 从容器中取回allure测试结果

记: D:\A_pythonCode\Python\docker_compose_demo

注:这里我已经有了可以生成allure报告的自动化测试容器

注:若使用pytest框架的allure-pytest插件用来生allure报告,只需在pytest.ini文件中添加如下内容,不用添加--clean-alluredir(若添加,到后面的步骤可能会报错):

XML 复制代码
addopts = --alluredir=./temps

不需要如下内容(因为容器运行结束后会自动复原,无需进行清理)
addopts = --alluredir=./temps --clean-alluredir

思路

容器在执行测试之后,会将测试结果保存在/app/temps中(该文件名需要在pytest框架中自己设置)

但是容器在执行测试之后,会结束、销毁

方式一:让Jenkins容器和自动化测试容器,共用宿主机的文件,实现数据共享

方式二:Jenkins容器的文件夹直接挂载到自动化测试容器,实现数据共享

方式三:共用第三方存储服务

此处使用的方式是第一种

1. 重启Jenkins,挂载宿主机的目录

(1)新建一个myjenkins/jenkins_home目录,让其作为映射的目录

(2)删除之前启动的jenkins容器

XML 复制代码
docker rm -f jenkins

(3)重启jenkins容器

XML 复制代码
docker run --name jenkins -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/docker-compose:/usr/bin/docker-compose -v /home/ubuntu/myjenkins/jenkins_home:/var/jenkins_home -u root -p 8120:8080 -d jenkins/jenkins:jdk11


docker run 
--name jenkins 
-v /usr/bin/docker:/usr/bin/docker 
-v /var/run/docker.sock:/var/run/docker.sock 
-v /usr/local/bin/docker-compose:/usr/bin/docker-compose 
-v /home/ubuntu/myjenkins/jenkins_home:/var/jenkins_home # 新增的文件映射
-u root 
-p 8120:8080 
-d 
jenkins/jenkins:jdk11

启动容器后查看myjenkins/jenkins_home目录,可以看到里面是存在内容的:

2. 重启自动化测试,挂载宿主机目录

(1)先在myjenkins/jenkins_home目录中新建一个名为allure-results的目录(可自拟名),用于映射文件(保存allure的测试结果)

XML 复制代码
sudo mkdir allure-results

(2)为这个目录添加权限

XML 复制代码
sudo chmod 777 /home/ubuntu/myjenkins/jenkins_home/allure-results/

(3)重启自动化测试容器,并为其挂载目录

XML 复制代码
docker run -v /home/ubuntu/myjenkins/jenkins_home/allure-results/:/app/temps/ -u root --rm allure_test:v1

命令详解
docker run
# /app/.temps是自动化测试容器存放allure报告内容的目录
-v /home/ubuntu/myjenkins/jenkins_home/allure-results/:/app/temps
--rm
allure_test:v1

现在我们完成了:

Jenkins容器 --> 主机 和 自动化测试容器 --> 主机

也就相当于完成了

Jenkins容器 --> 自动化测试容器

3. 在Jenkins中执行docker并生成allure

1. 在Jenkins中添加新的任务

访问服务器的8120端口(该端口是在前面启动Jenkins时设置的映射端口)

http://xxxxx:8120

此处的管理员密码可以通过查看Jenkins的日志获取

XML 复制代码
docker logs jenkins

然后选择插件,根据自己需要选即可(不放图了)

创建用户(自拟)

创建新项目

2. 在项目配置中添加shell脚本

在设置中添加如下内容:

下面的shell内容就是我们在重启自动化测试时执行的命令,但是关联的目录略有不同

XML 复制代码
mkdir -p allure-results && chmod 777 allure-results
docker run -v /home/ubuntu/myjenkins/jenkins_home/workspace/api_test_by_docker/allure-results/:/app/temps/ -u root --rm allure_test:v1

解析:

我们在重启自动化测试时的关联目录:

XML 复制代码
/home/ubuntu/myjenkins/jenkins_home/allure-results/

若继续使用此目录,则shell内容如下:

XML 复制代码
mkdir -p allure-results && chmod 777 allure-results
docker run -v /home/ubuntu/myjenkins/jenkins_home/allure-results/:/app/temps/ -u root --rm allure_test:v1

我们保存配置后,运行

然后查看控制台输出

可以看到构建的目录的位置和我们在命令里的目录是不同的

所以在docker run命令中的关联目录应该是上面红框里的jenkins的目录

其在Docker中的目录如下:

首先进入jenkins_home目录,然后如下图所示

最终得到的路径如下,也就是我们在命令中应该关联的docker目录:

XML 复制代码
/home/ubuntu/myjenkins/jenkins_home/workspace/api_test_by_docker/allureresults

使用此路经后再次执行,可以看到此路径下存在allure报告文件

3. 配置allure报告

(1)安装allure插件

(2)进入全局配置设置allure

(3)进入项目配置

里面的内容保持默认即可

执行任务、查看allure报告

相关推荐
SpikeKing2 分钟前
Server - 使用 Docker 配置 PyTorch 研发环境
pytorch·docker·llm
码农101号1 小时前
Linux中shell编程表达式和数组讲解
linux·运维·服务器
powerfulzyh1 小时前
非Root用户启动SSH服务经验小结
运维·ssh
云道轩1 小时前
升级centos 7.9内核到 5.4.x
linux·运维·centos
斯普信云原生组1 小时前
Docker构建自定义的镜像
java·spring cloud·docker
爱学习的小道长2 小时前
Ubuntu Cursor升级成v1.0
linux·运维·ubuntu
EelBarb2 小时前
seafile:ubuntu搭建社区版seafile12.0
linux·运维·ubuntu
402 Payment Required2 小时前
serv00 ssh登录保活脚本-邮件通知版
运维·chrome·ssh
小柏ぁ2 小时前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
Mintimate2 小时前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器