Docker+jenkins 运行 python 自动化
Posted 芒果不是程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker+jenkins 运行 python 自动化相关的知识,希望对你有一定的参考价值。
一、实现思路
- 在 Linux 服务器安装 docker
- 创建 jenkins 容器
- 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)
- 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目
- 执行完成之后删除容器
二。 环境准备
- Linux 服务器一台(我的是 CentOS7)
1、有云服务器的同学直接用云服务器2、没有云服务器的同学参考我的博客自己动手安装虚拟机吧VMware 安装 Centos7 步骤图解 - 在服务器上正确安装 docker
1、拉取 jenkins 镜像jenkins/jenkins:alpine2、拉取 python3 镜像docker pull python:3-alpine
三。 创建 jenkins 容器
- 命令
docker run -dit --name=jenkins_save01 -p 9999:8080 -u=root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:alpine - 参数说明
-i:表示运行容器-t:表示容器启动后会进入其命令行-d:守护式方式创建容器在后台运行--name:容器名称-p 9999:8080:端口映射,宿主机端口:jenkins 容器端口-u=root:指定容器用户为 root 用户-v /var/run/docker.sock:/var/run/docker.sock:将 docker.sock 映射到 jenkins 容器中docker.sock 文件是 docker client 与 docker daemon 通讯的文件-v /usr/bin/docker:/usr/bin/docker:将宿主机 docker 客户端映射到 jenkins 容器中 - 运行效果
1、看到返回容器 ID 表示 jenkins 容器创建成功
四。 配置 jenkins 容器
- 浏览器访问 http://192.168.1.66:9999,来到 jenkins 解锁页面
1、http://192.168.1.66 为 Linux 服务器 IP 地址2、9999 为宿主机映射端口
2.在 Linux 服务器执行命令获取管理员密码
1、执行命令:docker logs jenkins_save01
3.复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概 1 分钟左右,耐心等待)
4.取消默认插件勾选,进入下一步
5.设置管理员用户名和密码(以后就用这个账号密码登陆你的 jenkins)
6.配置实例
7.jenkins 初始化完成看到如下界面
五。 jenkins 安装插件
- 点上一步骤开始使用 jenkins,来到如下界面
2.点 Manage Jenkins 来到如下页面
3.点 Manage Plugins 安装插件
1、Git 插件安装
2、Docker 插件安装
3、html Publisher 插件安装
4、安装完成后重启 jenkins 容器
docker restart jenkins_save01
六。 创建 jenkins 任务
- 重新登陆 jenkins,点 New Item
2.创建自由风格的项目
七。 配置 jenkins 任务
- 配置构建记录保留规则
2.Git 仓库配置
3.配置构建后操作
1、添加构建后操作模块
2、配置运行脚本
3、配置 jenkins 中展示的测试报告路径
4、保存项目所有配置
六、构建有项目执行环境的 python 镜像
- 将项目依赖包导出来到 requirements.txt 文件中,txt 文件名称可以随意写
pip freeze > requirements.txt - 在宿主机(安装 docker 的机子)上新建一个目录(我的目录在/app),将 requirements.txt 文件复制进去
- 在 app 目录下创建 Dockerfile 文件(文件名必须是 Dockerfile,没有后缀)
- requirements.txt 文件内容如下
unittestreport==1.3.2
openpyxl==3.0.7
ddt==1.4.2
pytest==6.2.2
selenium==3.141.0
pymysql==1.0.2
faker==8.1.0
jsonpath==0.82
BeautifulReport==0.1.3
rsa==4.7.2
pytest-html==3.1.1
allure-pytest==2.9.43
requests-toolbelt==0.9.1
5.Dockerfile 内容以及解释如下
FROM python:3-alpine #基于python:3-alpine这个基础镜像镜像构建镜像
WORKDIR /app #切换工作空间目录
ADD ./requirements.txt /app #将python项目依赖包文件添加到镜像
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包
CMD ["python3", "main.py"] #设置容器执行后自动执行的命令,这里main.py是我们自动化框架的执行入口文件
5、在 app 目录下执行镜像构建命令
docker build -t python3.9:haili .
-t:镜像名称
点(.):点表示 Dockerfile 文件所在的目录,我现在在 app 目录下,点表示当前目录
6.构建成功后会看到一个新的镜像(docker images)
八。 完成 build.sh
- build.sh 内容如下
echo "运行容器python执行自动化" #输出日志
#-w=$WORKSPACE:指定workspace
#--volumes-from=jenkins_save01:将jenkins容器中的workspace映射到python容器中,此时jenkins中git拉下来的代码就会被映射进去
docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:haili
echo "python执行自动化执行成功"
2.将 build.sh 复制到你的项目根目录下
3.提交代码到 Git 仓库 Git add . Git commit -amupdate Git push
九。 去构建 jenkins 任务
- 回到 jenkins 首页,找到项目点构建
2.查看构建过程
3.点构建记录
4.查看构建过程(python 自动化项目的输出日志也在这里可以看到)
5.构建过程如下图
6.查看测试报告
7.此时的测试报告会没有样式,因为被 Jenkins 禁用了 CSS 样式,需要我们手动解决
十、解决测试报告没有样式的问题
把这个代码放进去执行:System.setProperty("
hudson.model.DirectoryBrowserSupport.CSP","")
执行成功返回是空,说明没问题
十一、重新构建可以看到有样式的测试报告
以上是关于Docker+jenkins 运行 python 自动化的主要内容,如果未能解决你的问题,请参考以下文章
docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)
docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)