一、实现思路
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
![](https://img-blog.csdnimg.cn/img_convert/5c95094b61b87e85a6a06219f2c0f13a.png)
三、配置jenkins容器
1、浏览器访问http://127.0.0.1:8080
![](https://img-blog.csdnimg.cn/img_convert/6609cfcabfb587272112b4bf5aaff8d7.png)
2、从上边的提示中获取到管理员密码登录进去。
这一步会比较慢,请耐心等待。
![](https://img-blog.csdnimg.cn/img_convert/af88facde479b97e6132d6bdf6271036.png)
3、
![](https://img-blog.csdnimg.cn/img_convert/57a7f436b8c38bcc0f05f674795ccca4.png)
4、设置管理员用户名和密码(以后就用这个账号密码登陆你的 jenkins)
![](https://img-blog.csdnimg.cn/img_convert/e481f53b222f4cb3023975f55f7ed744.png)
5、jenkins 初始化完成看到如下界面
![](https://img-blog.csdnimg.cn/img_convert/77dab4e79d41c92bb768bb8b35737e70.png)
四、 jenkins插件安装
接上一步开始使用jenkins,进入到如下界面。注,安装过过程中出现失败,就找到失败的插件重新安装一下就可以了。
![](https://img-blog.csdnimg.cn/img_convert/75e3e2de79dc4e1727ed7f6dbe0dcb3a.png)
![](https://img-blog.csdnimg.cn/img_convert/019420a950e03aae5c0fce7a8cd79521.png)
1、安装git
![](https://img-blog.csdnimg.cn/img_convert/44df8bc333ab421a077878b350adff93.png)
2、安装docker
![](https://img-blog.csdnimg.cn/img_convert/47ac64b409fe09eac28b009d264d9ddd.png)
3、html Publisher,安装(或者安装allure插件)
![](https://img-blog.csdnimg.cn/img_convert/ffa5fa0911fb63703d621c3c2aaacc9f.png)
4、 pipeline安装
![](https://img-blog.csdnimg.cn/img_convert/f1ad510945c5293f6ae62d608f33a420.png)
5、安装后重启jenkins容器
docker restart jenkins_save01
五、创建jenkins任务
1、重新登录jenkins,点击new item
![](https://img-blog.csdnimg.cn/img_convert/40ced6aff05e2ca0fd480b095eb0e081.png)
选择创建pipeline项目
![](https://img-blog.csdnimg.cn/img_convert/738baa9af7e5a828e9177b41d9d43138.png)
配置构建记录保存规则
![](https://img-blog.csdnimg.cn/img_convert/476585df4e16eb3f446f4d1cf7255ac6.png)
4、配置git仓库
远程仓库地址要去gitee上去复制链接
![](https://img-blog.csdnimg.cn/img_convert/a8c7bbc4fa73b638768a00579f603cd3.png)
5、添加git凭证
![](https://img-blog.csdnimg.cn/img_convert/961a4f4aeac5f5b9af508a1b3580f3f6.png)
![](https://img-blog.csdnimg.cn/img_convert/90852ebfdc8479b05543a4fcacad4747.png)
6、配置完成点击保存即可
![](https://img-blog.csdnimg.cn/img_convert/312a5033843595a76a814cbc852f88bc.png)
六、配置及构建
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)
![](https://img-blog.csdnimg.cn/img_convert/e8b99e350fc5a6bbd3f885046e16f276.png)
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 样式,需要我们手动解决
![](https://img-blog.csdnimg.cn/img_convert/95f0dcad18a340bab926ddff5bc44991.png)
![](https://img-blog.csdnimg.cn/img_convert/7a5bd819eb1f3bf4e188f6e2598e8050.png)
把这个代码放进去执行:System.setProperty("
hudson.model.DirectoryBrowserSupport.CSP","")
![](https://img-blog.csdnimg.cn/img_convert/e873bb79b0fcbefab6ae343d0a8ea697.png)
执行成功返回是空,说明没问题
![](https://img-blog.csdnimg.cn/img_convert/8f3451ea7636376b132033bf25d8af4d.png)
重新构建就可以看到漂亮的测试报告了
番外:jenkins介绍
jenkins流程
![](https://img-blog.csdnimg.cn/img_convert/b6e396c8f7cec8f737f509e8d0556a59.png)