[硬核分享]Docker+jenkinsPipeline 运行 python 自动化

一、实现思路

  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容器创建成功

 

四. 配置jenkins容器

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

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

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

 

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

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

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

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

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

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

  • 配置实例

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

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

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

五. jenkins安装插件

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

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

  1. 点Manage Jenkins来到如下页面

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

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

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

2、Docker插件安装

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

3、HTML Publisher 插件安装

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

4、安装Pipeline插件

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

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

六. 创建jenkins任务

  • 重新登陆jenkins,点New Item

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

  • 选择创建Pipeline项目

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

  • 配置构建记录保留规则

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

  • 配置Git仓库

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

  • 添加Git凭证

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

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

  • 配置Jenkinsfile路径

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

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

 

七. 构建有项目执行环境的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)

添加图片注释,不超过 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. 点构建

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

  1. 查看构建日志

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

 

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

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

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

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

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

 

 

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

 

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

 

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值