一、实现思路
-
在mac本地安装Docker Desktop
-
创建jenkins容器
-
根据自动化项目依赖包构建python镜像(构建自动化python环境)
-
运行新的python容器,执行jenkins从仓库中拉下来的自动化项目
-
执行完成之后删除容器
二、环境准备
1、一台mac
2、在mac上安装Docker Desktop,打开软件
3、在docker上拉取Jenkins镜像(我这里用的是一位朋友的包)
qinhaili/new_enkins:haili
4、在docker上拉取python镜像(我这里用的是一位朋友的包)
qinhaili/python3:haili
三、创建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 qinhaili/new_enkins:haili - 参数说明
-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容器
1、在浏览器中输入http://localhost:9999
2、在终端内输入命令获取管理员密码
1)执行命令:docker logs jenkins_save01
3、复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概1分钟左右,耐心等待)
4、取消默认插件勾选,进入下一步
5、设置管理员用户名和密码(以后就用这个账号密码登陆你的jenkins)
6、配置实例
7、jenkins初始化完成看到如下界面
五、jenkins安装插件
1、点上一步骤开始使用jenkins,来到如下界面
2、点Manage Jenkins来到如下页面
3、点Manage Plugins安装插件
1)Git插件安装
2)Docker插件安装
3)HTML Publisher 插件安装
4)安装完成后重启jenkins容器
docker restart jenkins_save01
六、创建jenkins任务
1、重新登陆jenkins,点New Item
2、创建自由风格的项目
七、配置jenkins任务
1、配置构建记录保留规则
2、Git仓库配置
3、配置构建后操作
1)添加构建后操作模块
2)配置运行脚本
3)配置jenkins中展示的测试报告路径
4)保存项目所有配置
八、构建有项目执行环境的python镜像
-
将项目依赖包导出来到req.txt文件中,txt文件名称可以随意写
pip freeze > req.txt -
在宿主机(安装docker的机子)上新建一个目录(我的目录在/app),将req.txt文件复制进去
在终端内输入mkdir app 切换到app目录下:cd app/ 查看目录下的文件:ls 打开编辑req.txt文件,将项目依赖包的文件,复制到req.txt文件内:vim req.txt 复制后,按esc切换模式,输入:wq 保存退出
-
在app目录下创建Dockerfile文件(文件名必须是Dockerfile,没有后缀)
打开编辑Dockerfile文件,将内容复制到文件内:vim Dockerfile
复制后,按esc切换模式,输入:wq 保存退出
查看目录下的文件:ls
此时有两个文件
-
req.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
- Dockerfile内容以及解释如下
FROM python:3-alpine #基于python:3-alpine这个基础镜像镜像构建镜像 WORKDIR /app #切换工作空间目录 ADD ./req.txt /app #将python项目依赖包文件添加到镜像 RUN pip3 install -r req.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包 CMD ["python3", "start_all.py"] #设置容器执行后自动执行的命令,这里start_all.py是我们自动化框架的执行入口文件
- 在app目录下执行镜像构建命令
docker build -t py48:nana .
-t:镜像名称
点(.):点表示Dockerfile文件所在的目录,我现在在app目录下,点表示当前目录
- 构建成功后会看到一个新的镜像(docker images)
九、 完成run.sh
1、run.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执行自动化执行成功"
1)将run.sh复制到你的项目根目录下
2)提交代码到Git仓库
git add .
git commit -am'update'
git push
十、去构建jenkins任务
1、回到jenkins首页,找到项目点构建
2、查看构建过程
3、点构建记录
4、查看构建过程(python自动化项目的输出日志也在这里可以看到)
5、构建过程如下图
6、查看测试报告
7、此时的测试报告会没有样式,因为被Jenkins禁用了CSS样式,需要我们手动解决
十一、解决测试报告没有样式的问题
把这个代码放进去执行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
执行成功返回是空,说明没问题
十二、重新构建可以看到有样式的测试报告