栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker上搭建Pytest+Allure+Jenkins接口自动化环境

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker上搭建Pytest+Allure+Jenkins接口自动化环境

需求:在XX公司服务器Docker上搭建接口自动化环境,使用Jenkins每天定时运行 并将报告发生公司 飞书/钉钉群。但是目前遇到这样的一个问题,在服务器上部署了docker环境,然后安装了Jenkins容器 ,最后从git上拉取代码后 发现 代码在jenkins容器的目录当中,jenkins运行代码就必须要进入容器当中运行,这样是不可能的。

目前我想到 3 个方法去实现:
(1)启动jenkins容器时 将容器的目录挂载到宿主机目录上去执行(方法不能实现)pass
(2)在jenkins上创建本地节点,将代码拉取到本地 然后去运行本地项目(可以实现,局限性小)pass
(3)重新封装jenkins镜像,在jenkins镜像中安装自动化所需要的环境 在容器中执行项目(步骤虽麻烦,但一次封装后续永久使用)

Pytest+Allure+Jenkins自动化环境
  • 一 、安装Docker
  • 二、Docker上安装Jenkins
    • 2.1 启动jenkins
  • 三、Jenkins容器安装自动化环境
    • 3.1 安装python3环境
    • 3.2 安装python3的三方库
    • 3.2 Jenkins配置环境
    • 四、Docker 镜像封装使用
  • 4.1 打包镜像
    • 4.2 镜像使用
    • 4.3 docker上下载自己上传到镜像

一 、安装Docker

docker容器基本操作:直达

服务器上输入 docker -v 查看是否已安装
没有安装docker的同学 安装Docker

二、Docker上安装Jenkins

1.查找docker上的镜像
	docker search jenkins
  
2.下载自己所需要的镜像
	docker pull jenkinsci/blueocean
  
3.查看是否下载成功
	docker images
  
4.启动下载的jenkins镜像
  docker run -d -p 10240:8080 -p 10241:50000 -v /jenkins_autotest/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime  -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkint_test jenkinsci/blueocean
 
说明:
	docker run	运行
	-d:后台运行容器
  	-p:指定容器的端口映射 -p 10240:8080  # 将容器的8080端口映射到宿主机的10240端口上 ,映射多个端口使用 -p 8082:8080  -p 8083:8081
    -v:挂载宿主机目录和docker容器中的目录  
    	/Users/songpeilun/jenkins_home 	# 本地宿主机绝对目录
    	/var/jenkins_home	# 容器目录(将容器目录挂载到本地)
    -v:/etc/localtime:/etc/localtime  # 本地时间和容器时间同步
    -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai 	 # 设置容器时间为上海时间(不然容器时间和本地时间相差8小时)
      --name jenkint_test  # 设置容器的名称
      jenkinsci/blueocean	# 选择镜像名称启动容器(默认镜像后面会加latest  如果拉取自己创建的镜像后面要加自己的版本号)

!!容器目录挂载本地目录时 一定要给本地文件夹赋予权限  chmod 777 jenkins_home
2.1 启动jenkins

浏览器访问 http://:10240 如果无法访问请关闭系统防火墙
密码存放在 cat /var/lib/jenkins/secrets/initialAdminPassword

三、Jenkins容器安装自动化环境

jenkins容器 使用git拉取代码后 默认是放在容器当中的/var/jenkins_home/workspace/autotest 无法正常运行代码。

在jenkins容器中安装python相关环境 就可以完美解决该问题。当然也可以在jenkins中创建宿主机 把代码映射到本地 然后在本地执行。但是这样做相当于电脑当做服务器 每次运行自动化之前都需要打开电脑。(我之前就是这么干的,局限性太小)

1.首先根据容器id进入容器内部

docker exec -itu root 容器id /bin/sh

weget 安装(不推荐,基本和现安装的方法差不多,先要安装一些依赖包,如 gcc 等)
apk add 安装(此版本是alpine :apk add,能够快速安装完成)

2.最后注意系统版本问题:

如果是 centos 那即是 yum
如果是 ubuntu 那即是 apt-get
如果是 alpine 那即是 apk

3.1 安装python3环境
  1. alpine系统使用apk命令安装
cd /etc/apk/
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > repositories
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> repositories

  1. 更新 apk 源:apk update
apk update

  1. 输入 apk add python3 安装python环境
apk add python3
  1. 更新pip3:pip3 install --upgrade pip
pip3 install --upgrade pip

# 验证python环境
python -V
Pip3 -V

3.2 安装python3的三方库

1.创建requirements.txt 文件

​	pip freeze > requirements.txt
​	pip install -r requirements.txt

2.vi requirements.txt 打开文件进行编辑

base64-test0926 ==1.0.0
PyMySQL==1.0.2
pytest==6.2.3
python-jenkins==1.7.0
PyYAML==5.4.1
redis==3.5.3
requests==2.25.1
SQLAlchemy==1.4.10
urllib3==1.26.4
wheel==0.36.2
xlrd==1.2.0
allure-pytest==2.8.40
allure-python-commons==2.8.40

最后2个需要将 Allure 报告配置完成后在进行安装,不然会报错

输入 pip3 list 查看三方库是否安装成功
拷贝完之后验证一下是否有完整的运行环境 可以将项目拷贝到容器中执行测试

3.2 Jenkins配置环境

1.新建项目

https://github.com/XXX/zh-cnProject.git
ssh://git@xxx/energy/skiffenergy/autotest.git


2.添加gitlab的账户信息


3.构建触发配置
以我的项目为例 每天8点15运行、每次构建之前先清空上次构建的数据缓存

4.构建信息配置

5.构建后操作
这一步比较关键,有很多同学 构建完成后打开报告出现没有数据的情况 都是这一步出现的问题!!!

最后附上一份定时运行的报告数据
到这里就已经完成安装了。后面会介绍将配置好的容器打包上传到自己的

6. 帮忙踩坑
实践的时候难免会碰到各种各样的问题,这里把我遇到的问题总结一下。
(6.1)镜像当中确少greenlet 插件
先查看python3 pip3的安装路径是否有greenlet文件目录

然后进入 /usr/lib/python3.6/site-packages 文件夹,这里面都是python3所需要的环境

将这两个文件放进去(从宿主机拷贝到容器的这个目录当中)下载 greenlet 密码 48n2
拷贝完之后输入pip3 list 查看是不是已经有该插件了,然后在去执行刚刚安装报错的插件 使用pip3 install 库名称

(6.2)提示找不到文件 command not found
使用绝对路径去运行

(6.3)github拉取代码失败
账号和密码正确,ssh密匙没有问题 第一次拉取成功,后面拉取一直失败

连接github的时候选择的是ssh 但是在配置url连接的时候选择的是https所有会导致失败 使用ssh拉取代码显示成功git@github.com:xxx/zh-cnProject.git 格式类型一定要相对应

(6.4)jenkins时间与本地时间不一致
启动jenkins容器的时候添加-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai

四、Docker 镜像封装使用

上面已经安装好了所有环境并且测试没有问题后,可以打包上传了

4.1 打包镜像
docker commit -a "songpeilun" -m "python3.7.9" 7dc75172f62d python3.7.9:spl
说明:
	-a "songpeilun"		# 提交的镜像作者
	-m "python3.7.9"		# 提交时的说明文字
	7dc75172f62d:ConTAINER ID   # 容器id

python3.7.9:spl:REPOSITORY:TAG
说明:
	REPOSITORY    # 镜像仓库
	TAG           # 镜像标签
	IMAGE ID      # 镜像ID
	CREATED       # 镜像创建时间
	SIZE          # 镜像大小

4.2 镜像使用

1)将docker上镜像下载到本地

# 方法一:docker sava 镜像id > 本地地址
docker save baf771f9d0be > /Users/songpeilun/python/python3.7.9.tar

# 方法二:docker save -o 指向本地地址 镜像 REPOSITORY
docker save -o /Users/songpeilun/python/python.tar python3.7.9

1)将docker上镜像上传到dockerhub上
第一步注册 dockerhub 百度
第二步上传镜像

# 步骤一:登录docker输入账号密码
docker login

# 步骤二:查看本地镜像 
docker images

# 步骤三:更改镜像名称(否则会报错)
docker tag REPOSITORY:TAG EPOSITORY:TAG(新的名称和版本号)
docker tag python3.7.9:spl 镜像名称:版本号 
    
# 步骤四:push镜像
docker push 镜像名称:版本号 


4.3 docker上下载自己上传到镜像

docker pull 镜像名称:版本号

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号