一、实现思路

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




docker忘记jenkins密码 docker jenkins pipeline_python


三、配置jenkins容器

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


docker忘记jenkins密码 docker jenkins pipeline_自动化_02


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

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


docker忘记jenkins密码 docker jenkins pipeline_自动化_03


3、


docker忘记jenkins密码 docker jenkins pipeline_自动化_04


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


docker忘记jenkins密码 docker jenkins pipeline_自动化_05


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


docker忘记jenkins密码 docker jenkins pipeline_docker_06


四、 jenkins插件安装

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


docker忘记jenkins密码 docker jenkins pipeline_自动化_07


docker忘记jenkins密码 docker jenkins pipeline_python_08


1、安装git


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_09


2、安装docker


docker忘记jenkins密码 docker jenkins pipeline_docker_10


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


docker忘记jenkins密码 docker jenkins pipeline_python_11


4、 pipeline安装


docker忘记jenkins密码 docker jenkins pipeline_docker_12


5、安装后重启jenkins容器

docker restart jenkins_save01

五、创建jenkins任务

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


docker忘记jenkins密码 docker jenkins pipeline_python_13


  1. 选择创建pipeline项目


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_14


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


docker忘记jenkins密码 docker jenkins pipeline_docker_15


4、配置git仓库

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


docker忘记jenkins密码 docker jenkins pipeline_docker_16


5、添加git凭证


docker忘记jenkins密码 docker jenkins pipeline_Powered by 金山文档_17


docker忘记jenkins密码 docker jenkins pipeline_Powered by 金山文档_18


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


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_19


六、配置及构建

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)


docker忘记jenkins密码 docker jenkins pipeline_python_20


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 样式,需要我们手动解决


docker忘记jenkins密码 docker jenkins pipeline_python_21


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_22


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

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


docker忘记jenkins密码 docker jenkins pipeline_docker_23


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


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_24


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

番外:jenkins介绍

jenkins流程


docker忘记jenkins密码 docker jenkins pipeline_docker忘记jenkins密码_25