Docker+jenkins 运行 python 自动化

一、实现思路
  1. 在Linux服务器安装docker
  2. 创建jenkins容器
  3. 根据自动化项目依赖包构建python镜像(构建自动化python环境)
  4. 运行新的python容器,执行jenkins从仓库中拉下来的自动化项目
  5. 执行完成之后删除容器
二. 环境准备
  1. Linux服务器一台(我的是CentOS7)
    1、有云服务器的同学直接用云服务器
    2、没有云服务器的同学参考我的博客自己动手安装虚拟机吧
    http://testingpai.com/article/1629981536584
  2. 在服务器上正确安装docker
    1、拉取jenkins镜像
    jenkins/jenkins:alpine
    2、拉取python3镜像
    docker pull python:3-alpine
三. 创建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 jenkins/jenkins:alpine
  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容器创建成功
    image.png
四. 配置jenkins容器
  1. 浏览器访问http://192.168.1.66:9999,来到jenkins解锁页面
    1、http://192.168.1.66为linux服务器IP地址
    2、9999为宿主机映射端口
    Docker+jenkins 运行 python 自动化_第1张图片
  2. 在Linux服务器执行命令获取管理员密码
    1、执行命令:docker logs jenkins_save01
    Docker+jenkins 运行 python 自动化_第2张图片
  3. 复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概1分钟左右,耐心等待)
    Docker+jenkins 运行 python 自动化_第3张图片
  4. 取消默认插件勾选,进入下一步
    Docker+jenkins 运行 python 自动化_第4张图片
  5. 设置管理员用户名和密码(以后就用这个账号密码登陆你的jenkins)
    Docker+jenkins 运行 python 自动化_第5张图片
  6. 配置实例
    Docker+jenkins 运行 python 自动化_第6张图片
  7. jenkins初始化完成看到如下界面
    Docker+jenkins 运行 python 自动化_第7张图片
五. jenkins安装插件
  1. 点上一步骤开始使用jenkins,来到如下界面
    Docker+jenkins 运行 python 自动化_第8张图片

  2. 点Manage Jenkins来到如下页面
    Docker+jenkins 运行 python 自动化_第9张图片

  3. 点Manage Plugins安装插件
    1、Git插件安装
    Docker+jenkins 运行 python 自动化_第10张图片

    2、Docker插件安装
    Docker+jenkins 运行 python 自动化_第11张图片
    3、HTML Publisher 插件安装
    Docker+jenkins 运行 python 自动化_第12张图片
    4、安装完成后重启jenkins容器
    docker restart jenkins_save01

六. 创建jenkins任务
  1. 重新登陆jenkins,点New Item
    Docker+jenkins 运行 python 自动化_第13张图片
  2. 创建自由风格的项目
    Docker+jenkins 运行 python 自动化_第14张图片
七. 配置jenkins任务
  1. 配置构建记录保留规则
    Docker+jenkins 运行 python 自动化_第15张图片
  2. Git仓库配置
    Docker+jenkins 运行 python 自动化_第16张图片
    Docker+jenkins 运行 python 自动化_第17张图片
    Docker+jenkins 运行 python 自动化_第18张图片
    Docker+jenkins 运行 python 自动化_第19张图片
  3. 配置构建后操作
    1、添加构建后操作模块
    Docker+jenkins 运行 python 自动化_第20张图片
    2、配置运行脚本
    Docker+jenkins 运行 python 自动化_第21张图片
    3、配置jenkins中展示的测试报告路径
    Docker+jenkins 运行 python 自动化_第22张图片
    Docker+jenkins 运行 python 自动化_第23张图片
    Docker+jenkins 运行 python 自动化_第24张图片
  4. 保存项目所有配置
    Docker+jenkins 运行 python 自动化_第25张图片

六、构建有项目执行环境的python镜像

  1. 将项目依赖包导出来到requirements.txt文件中,txt文件名称可以随意写
    pip freeze > requirements.txt

  2. 在宿主机(安装docker的机子)上新建一个目录(我的目录在/app),将requirements.txt文件复制进去

  3. 在app目录下创建Dockerfile文件(文件名必须是Dockerfile,没有后缀)

  4. 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)
    Docker+jenkins 运行 python 自动化_第26张图片

八. 完成build.sh
  1. 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 -am’update’
    git push

九. 去构建jenkins任务
  1. 回到jenkins首页,找到项目点构建
    Docker+jenkins 运行 python 自动化_第27张图片
  2. 查看构建过程
    Docker+jenkins 运行 python 自动化_第28张图片
  3. 点构建记录
    Docker+jenkins 运行 python 自动化_第29张图片
  4. 查看构建过程(python自动化项目的输出日志也在这里可以看到)
    Docker+jenkins 运行 python 自动化_第30张图片
  5. 构建过程如下图
    Docker+jenkins 运行 python 自动化_第31张图片
  6. 查看测试报告
    Docker+jenkins 运行 python 自动化_第32张图片
  7. 此时的测试报告会没有样式,因为被Jenkins禁用了CSS样式,需要我们手动解决
    Docker+jenkins 运行 python 自动化_第33张图片
十、解决测试报告没有样式的问题

Docker+jenkins 运行 python 自动化_第34张图片

Docker+jenkins 运行 python 自动化_第35张图片

把这个代码放进去执行:System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“”)

Docker+jenkins 运行 python 自动化_第36张图片

执行成功返回是空,说明没问题
Docker+jenkins 运行 python 自动化_第37张图片

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

Docker+jenkins 运行 python 自动化_第38张图片

ps: 一起学习,一起进步,有问题私信我

你可能感兴趣的:(python,python,开发语言,后端)