一、实现思路

  1. 在mac本地安装Docker Desktop

  2. 创建jenkins容器

  3. 根据自动化项目依赖包构建python镜像(构建自动化python环境)

  4. 运行新的python容器,执行jenkins从仓库中拉下来的自动化项目

  5. 执行完成之后删除容器

二、环境准备

1、一台mac

2、在mac上安装Docker Desktop,打开软件

3、在docker上拉取Jenkins镜像(我这里用的是一位朋友的包)

qinhaili/new_enkins:haili

4、在docker上拉取python镜像(我这里用的是一位朋友的包)

qinhaili/python3:haili

三、创建jenkins容器

  1. 命令
    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
  2. 参数说明
    -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容器中
  3. 运行效果
    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","")

 执行成功返回是空,说明没问题

 

十二、重新构建可以看到有样式的测试报告