python接口自动化-16.Docker+jenkins+Pipeline+Allure运行 python 自动化

一、实现思路

1、安装 docker:注意:在服务器上正确安装 docker

2、创建 jenkins 容器

3、jenkins 中创建 pipeline 项目

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

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

6、执行完成之后删除容器

二、环境准备

1、安装docker

2、docker安装jenkins

docker run --name=jenkins_save01 -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

参数说明:

--name :容器名称
-p 9999:8080:端口映射,宿主机端口:jenkins 容器端口
-v jenkins_home:/var/jenkins_home:将宿主机 docker 客户端映射到 jenkins 容器中
jenkins/jenkins:lts jenkins镜像

安装成功后,你会在docker客户端看到这个容器,并且是启动状态

docker命令看启动的容器,docker ps

三、配置jenkins容器

1、浏览器访问http://127.0.0.1:8080

2、从上边的提示中获取到管理员密码登录进去。

这一步会比较慢,请耐心等待。

3、

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

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

四、 jenkins插件安装

接上一步开始使用jenkins,进入到如下界面。注,安装过过程中出现失败,就找到失败的插件重新安装一下就可以了。

1、安装git

2、安装docker

3、html Publisher,安装(或者安装allure插件)

4、 pipeline安装

5、安装后重启jenkins容器

docker restart jenkins_save01

五、创建jenkins任务

1、重新登录jenkins,点击new item

  1. 选择创建pipeline项目

  1. 配置构建记录保存规则

4、配置git仓库

远程仓库地址要去gitee上去复制链接

5、添加git凭证

6、配置完成点击保存即可

六、配置及构建

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

5、Dockerfile 内容以及解释如下

FROM python:3.7.4  #基于python:3.7.4这个基础镜像镜像构建镜像
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是我们自动化框架的执行入口文件

在 app 目录下执行镜像构建命令

docker build -t python3.7:annlin .

-t:镜像名称

点(.):点表示 Dockerfile 文件所在的目录,我现在在 app 目录下,点表示当前目录

6、构建成功后会看到一个新的镜像(命令:docker images)

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

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

8、 写 Jenkinsfile 文件并将放到python项目的根目录下

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

pipeline {
    agent {
      label '192.168.1.xxx'
    }
   triggers {
    cron 'H 1 * * *'
    }
    environment {
      wechat_url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=73e658f6-724e-4047-9ac2-d64059e2df23'
   }
    parameters {
      string defaultValue: 'testcases/', description:
            '''运行具体的案例 :例如:testcases/app/Fund,
                                testcases/app/MY/news_test.py 运行具体案例
                                testcases/app/Fund 运行Fund下所有案例''',
            name: 'testcases', trim: true
      choice choices: ['False', 'True'], description: '只运行上次结果为失败案例 True/False', name: 'rerun_fail'
     string  defaultValue: '' ,description: '''只运行包含标签的案例,例如 @pytest.mark.website,填写 mark : website ''', name: 'mark', trim: true
     choice choices: ['jenkins', 'localhost'], description: '选jenkins代表用Jenkins配置,选localhost代表用项目的test_run.yaml运行项目', name: 'env'
     choice choices: ['test', 'dev'], description: '测试环境:test,生产环境环境:dev', name: 'run_env'
   }
   stages {
      stage('git') {
         steps {
            git credentialsId: '67797368-24df-4797-803d-d5fbe1daa964', url: 'https://git.silvrr.com/pengyf/asetku_inautomation.git'
         }
      }
      stage('clean allure') {
         steps {
            sh label: '', script: '''cd result
                                 rm -rf *
                                 cd ..'''
         }
      }
      stage('Test') {
         steps {
            sh label: '', script: 'python3 main_run.py testcases=$testcases marks=$mark rerun_fail=$rerun_fail'
         }
      }
   }
   post {
      always{
         script {
            allure includeProperties: false, jdk: '', report: 'allure-report', results: [[path: 'result']]
         }
      }
   }
}

8、提交代码到git仓库

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

9、构建 jenkins 任务

10、查看构建日志

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

把这个代码放进去执行:System.setProperty("

hudson.model.DirectoryBrowserSupport.CSP","")

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

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

番外:jenkins介绍

jenkins流程

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值