环境准备
k8s集群
jenkins-master
动态创建jenkins-slave
创建动态的jenkins-slave
系统管理 》 节点管理 》 Cloud Manager 》 配置集群
更详细请查看:
devops-k8s部署jenkins和动态创建slave节
安装allure插件
系统设置 》 插件管理 》 Available plugins :
查找allure 插件, 安装之后,如图所示:
创建pipeline任务
全局配置
构建触发器:
提前准备:
插件安装自行安装。安装成功以后,才有该选项。
- Generic Webhook Trigger 触发器,需要提前安装插件,
2. 触发器需要和gitlab项目进行关联配置。自行关联
变量branch配置:
$.ref 从关联的gitlab项目中提出分支名 branch 将提出的分支赋值为此变量,方便在jenkinsfile文件中进行引用
变量userName配置
$.user_username: 从gitlab项目中提取提交者 userName: 提取的提交者名称分支此变量。方便在jenkinsfile中引用
变量projectId 配置
$.project.id: 从gitlab项目中提取项目id projectId: 提取的项目ID,赋值给此变量。方便在jenkinsfile中引用
$.checkout_sha: 从gitlab项目中提取,提交的ID commitSha: 提取的提交ID,赋值给此变量。方便在jenkinsfile中引用
token 配置
配置的token,作为trigger_url地址参数 作用: 区分gitla项目在提交时,是否要触发trigger的唯一认证
显示输出流水线执行的日志信息
流水线配置
脚本内容:
String allure_results_path = "./allure-results"pipeline agent kubernetes //yamlFile 'KubernetesPod.yaml' cloud 'kubernetes' yaml '''---apiVersion v1 kind Pod metadata namespace devops spec nodeSelector kubernetes.io/os linux restartPolicy Never serviceAccountName jenkins containersname"docker" image"docker:latest" imagePullPolicy"IfNotPresent" resources limits requests command cat ttytrue volumeMountsmountPath /var/run/docker.sock name docker-sock readOnlyfalsename"python3" image"python:3.8.6" imagePullPolicy"IfNotPresent" resources limits requests command cat ttytrue volumeshostPath path /var/run/docker.sock name docker-sock ''' stages stage('checkout') steps checkout([$class'GitSCM' branches name'*/dev' extensions userRemoteConfigs credentialsId'gitlab-author' url'http://192.168.110.200:8085/yfy-test/pytest-k8s-demo.git' ) stage('build-allure-results') steps container('python3') sh """ python --version pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple python main.py $ allure_results_path""" stage('build-allure-export') steps // 通过jenkins的全局工具配置,下载allure工具 allure includeProperties false jdk'' results path'${allure_results_path}' stage('docker build') steps container('docker') sh """ docker version """ container('python3') print('user mutil container...')
脚本中内容说明
指定agent类型为kubernets:
cloud'kubernetes': 这里的kubernetes值,就是在创建jenkins-slave节点时,指定的。 如下图所示
在流水线中,使用的docker和python3镜像
注意:在下载镜像时,除了会下载定义的docker 和 python3 镜像,默认还会下载一个jnlp镜像。 如图所示:
从gitlab中下载项目代码。通过流水线语法来生成
生成allure-results 和 allure-export配置
注意:
container('python3') : 使用在yaml文件中,配置的python3容器 python main.py $ allure_results_path : 这里生成的测试结果路径一定是$ WORKSPACE /xxxx目录下。 否则,在生成报告时, 会出现 类型于 allure-results not exits问题。
将测试用例结果,生成html报告,用于方便查看
注意: 这里必须要使用jenkins提供的 Allure-export 插件,来生成报告。
通过流水线语法类生成,上面内容。 报告的输出路径一定是${WORKSPACE}/xxx的路径
否则,生成的报告无法预览。
引用 docker 容器
其他
测试依赖python项目
测试用例文件:
相关依赖库
项目运行,入口文件:
注意:
sys.argv 1 : 动态传递测试用例执行的结果路径。