一、实现思路
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
- 选择创建pipeline项目
- 配置构建记录保存规则
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流程