一、实现思路

  1. 在 Linux 服务器安装 docker
  2. 创建 jenkins 容器
  3. jenkins中创建pipeline项目
  4. 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)
  5. 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目
  6. 执行完成之后删除容器

二、环境准备

  • Linux 服务器一台(我的是 CentOS7) 1、有云服务器的同学直接用云服务器
  • 在服务器上正确安装 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容器创建成功

docker jenkins 前端 docker jenkins pipeline_python

 

四. 配置jenkins容器

  1. 浏览器访问http://192.168.1.66,来到jenkins解锁页面 1、http://192.168.1.66为linux服务器IP地址 2、9999为宿主机映射端口

docker jenkins 前端 docker jenkins pipeline_python_02


添加图片注释,不超过 140 字(可选)

  • 在Linux服务器执行命令获取管理员密码 1、执行命令:docker logs jenkins_save01

docker jenkins 前端 docker jenkins pipeline_运维_03


 

  • 复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概1分钟左右,耐心等待)

docker jenkins 前端 docker jenkins pipeline_python_04


添加图片注释,不超过 140 字(可选)

  • 取消默认插件勾选,进入下一步

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_05


添加图片注释,不超过 140 字(可选)

  • 设置管理员用户名和密码(以后就用这个账号密码登陆你的jenkins)

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_06


添加图片注释,不超过 140 字(可选)

  • 配置实例

docker jenkins 前端 docker jenkins pipeline_jenkins_07


添加图片注释,不超过 140 字(可选)

  • jenkins初始化完成看到如下界面

docker jenkins 前端 docker jenkins pipeline_运维_08


添加图片注释,不超过 140 字(可选)

五. jenkins安装插件

点上一步骤开始使用jenkins,来到如下界面

docker jenkins 前端 docker jenkins pipeline_python_09


添加图片注释,不超过 140 字(可选)

  1. 点Manage Jenkins来到如下页面

docker jenkins 前端 docker jenkins pipeline_docker_10


添加图片注释,不超过 140 字(可选)

  1. 点Manage Plugins安装插件 1、Git插件安装

docker jenkins 前端 docker jenkins pipeline_docker_11


添加图片注释,不超过 140 字(可选)

2、Docker插件安装

docker jenkins 前端 docker jenkins pipeline_jenkins_12


添加图片注释,不超过 140 字(可选)

3、HTML Publisher 插件安装

docker jenkins 前端 docker jenkins pipeline_jenkins_13


添加图片注释,不超过 140 字(可选)

4、安装Pipeline插件

docker jenkins 前端 docker jenkins pipeline_python_14


添加图片注释,不超过 140 字(可选)

5、安装完成后重启jenkins容器 docker restart jenkins_save01

六. 创建jenkins任务

  • 重新登陆jenkins,点New Item

docker jenkins 前端 docker jenkins pipeline_docker_15


添加图片注释,不超过 140 字(可选)

  • 选择创建Pipeline项目

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_16


添加图片注释,不超过 140 字(可选)

  • 配置构建记录保留规则

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_17


添加图片注释,不超过 140 字(可选)

  • 配置Git仓库

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_18


添加图片注释,不超过 140 字(可选)

  • 添加Git凭证

docker jenkins 前端 docker jenkins pipeline_jenkins_19


添加图片注释,不超过 140 字(可选)

docker jenkins 前端 docker jenkins pipeline_docker_20


添加图片注释,不超过 140 字(可选)

  • 配置Jenkinsfile路径

docker jenkins 前端 docker jenkins pipeline_docker_21


添加图片注释,不超过 140 字(可选)

  • 配置完成直接点保存即可

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_22


 

七. 构建有项目执行环境的python镜像

  1. 将项目依赖包导出来到requirements.txt文件中,txt文件名称可以随意写 pip freeze > requirements.txt
  2. 在宿主机(安装docker的机子)上新建一个目录(我的目录在/app),将requirements.txt文件复制进去
  3. 在app目录下创建Dockerfile文件(文件名必须是Dockerfile,没有后缀)
  4. requirement.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

  1. Dockerfile内容以及解释如下
  2. 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目录下,点表示当前目录

构建成功后会看到一个新的镜像(docker images)

docker jenkins 前端 docker jenkins pipeline_运维_23


添加图片注释,不超过 140 字(可选)

八、创建build.sh文件并放到项目根目录下


echo "运行容器python执行自动化" docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:haili echo "python执行自动化执行成功"

九、写Jenkinsfile文件并将放到项目根目录下




pipeline{ //配置执行环境 agent any //配置构建过程 stages{ stage('build'){ steps{ echo '开始执行shell脚本' sh 'sh build.sh' } }//stage }//stages //配置构建后操作 post{ always{ echo 'Pipeline 构建成功' publishHTML(target:[allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: 'reports', reportFiles: '*.html', reportName: 'My Reports', reportTitles: 'The Report']) } }//post }//pipeline

十、提交代码到远程仓库

git add .
git commit -am'update'
git push

十一、构建你jenkins任务

  1. 点构建

docker jenkins 前端 docker jenkins pipeline_jenkins_24


添加图片注释,不超过 140 字(可选)

  1. 查看构建日志

docker jenkins 前端 docker jenkins pipeline_docker_25


添加图片注释,不超过 140 字(可选)

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_26

 

docker jenkins 前端 docker jenkins pipeline_运维_27


添加图片注释,不超过 140 字(可选)

查看测试报告,此时的测试报告会没有样式,因为被Jenkins禁用了CSS样式,需要我们手动解决

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_28


添加图片注释,不超过 140 字(可选)

docker jenkins 前端 docker jenkins pipeline_python_29


添加图片注释,不超过 140 字(可选)

十二、解决测试报告没有样式的问题

docker jenkins 前端 docker jenkins pipeline_python_30


 

docker jenkins 前端 docker jenkins pipeline_python_31


 

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

docker jenkins 前端 docker jenkins pipeline_docker_32


 

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

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_33


 

重新构建就可以看到漂亮的测试报告了

docker jenkins 前端 docker jenkins pipeline_docker jenkins 前端_34