devops-在jenkins-slave(k8s)中集成pytest + allure使用

简介: 在k8s集群中, allure 在 jenkins-slave 中集成使用

环境准备


k8s集群

jenkins-master

动态创建jenkins-slave



创建动态的jenkins-slave



系统管理 》 节点管理 》 Cloud Manager 》 配置集群image.png


更详细请查看:


devops-k8s部署jenkins和动态创建slave节




安装allure插件



系统设置 》 插件管理 》 Available plugins :

查找allure 插件, 安装之后,如图所示:


image.png









创建pipeline任务



image.png




全局配置


构建触发器:


提前准备:


  1. Generic Webhook Trigger 触发器,需要提前安装插件,
插件安装自行安装。安装成功以后,才有该选项。
2.  触发器需要和gitlab项目进行关联配置。自行关联




变量branch配置:

image.png


$.ref: 从关联的gitlab项目中提出分支名
branch: 将提出的分支赋值为此变量,方便在jenkinsfile文件中进行引用



变量userName配置

image.png



$.user_username: 从gitlab项目中提取提交者
userName: 提取的提交者名称分支此变量。方便在jenkinsfile中引用



变量projectId 配置

image.png

$.project.id: 从gitlab项目中提取项目id
projectId: 提取的项目ID,赋值给此变量。方便在jenkinsfile中引用



image.png



$.checkout_sha: 从gitlab项目中提取,提交的ID
commitSha: 提取的提交ID,赋值给此变量。方便在jenkinsfile中引用


token 配置

image.png


配置的token,作为trigger_url地址参数
作用: 区分gitla项目在提交时,是否要触发trigger的唯一认证


显示输出流水线执行的日志信息

image.png



流水线配置



image.png




脚本内容:


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
  containers:    - name: "docker"      image: "docker:latest"      imagePullPolicy: "IfNotPresent"      resources:        limits: {}        requests: {}      command:      - cat
      tty: true      volumeMounts:        - mountPath: /var/run/docker.sock
          name: docker-sock
          readOnly: false    - name: "python3"      image: "python:3.8.6"      imagePullPolicy: "IfNotPresent"      resources:        limits: {}        requests: {}      command:      - cat
      tty: true  volumes:    - hostPath:        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:


image.png

cloud: 'kubernetes': 这里的kubernetes值,就是在创建jenkins-slave节点时,指定的。
如下图所示

image.png



在流水线中,使用的docker和python3镜像

image.png



注意:在下载镜像时,除了会下载定义的docker 和 python3 镜像,默认还会下载一个jnlp镜像。
如图所示:


image.png



从gitlab中下载项目代码。通过流水线语法来生成


image.png



生成allure-results 和 allure-export配置

image.png



注意:

 container('python3') : 使用在yaml文件中,配置的python3容器
  python main.py ${allure_results_path}: 这里生成的测试结果路径一定是${WORKSPACE}/xxxx目录下。
  否则,在生成报告时, 会出现 类型于  allure-results not exits问题。



将测试用例结果,生成html报告,用于方便查看




image.png


注意: 这里必须要使用jenkins提供的 Allure-export 插件,来生成报告。


通过流水线语法类生成,上面内容。 报告的输出路径一定是${WORKSPACE}/xxx的路径

否则,生成的报告无法预览。




引用 docker 容器

image.png



其他



测试依赖python项目


测试用例文件:

image.png


相关依赖库


image.png



项目运行,入口文件:

image.png


注意:

sys.argv[1]: 动态传递测试用例执行的结果路径。








































































相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
jenkins Java 持续交付
【项目集成工具】Jenkins
【项目集成工具】Jenkins
|
7天前
|
测试技术 Python
cypress 和allure 集成生成测试报告
cypress 和allure 集成生成测试报告
cypress 和allure 集成生成测试报告
|
1天前
|
Kubernetes 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与Kubernetes集成:容器化部署的最佳实践
【5月更文挑战第21天】本文介绍了将阿里云的高性能数据库PolarDB与容器编排工具Kubernetes集成的步骤。首先,需准备Kubernetes集群和PolarDB Docker镜像,安装Helm。然后,通过Helm部署PolarDB,设置存储类和副本数。接着,应用配置PolarDB连接信息,打包成Docker镜像并在K8s集群中部署。此外,调整PolarDB参数以优化性能,并使用Prometheus和Grafana监控。本文为PolarDB在Kubernetes中的最佳实践提供了指导。
20 4
|
6天前
|
Java 数据库连接 Spring
K8S+Docker理论与实践深度集成java面试jvm原理
K8S+Docker理论与实践深度集成java面试jvm原理
|
7天前
|
jenkins Java 持续交付
实战指南:运用Jenkins实现Java项目的持续集成与自动化部署
【4月更文挑战第17天】Jenkins是一款强大的开源CI/CD工具,广泛用于Java项目的自动化构建、测试和部署。通过配置Jenkins环境、创建Job、设定构建触发器和步骤,实现持续集成和部署。集成Maven、Git等工具,确保代码质量并加速上线。持续部署阶段,Jenkins可将工件发布至远程服务器或云环境,实现高效、稳定的自动化流程。实践过程中,关注工作流优化、配置备份和服务器状态监控,以提升整体开发效率和软件质量。
|
7天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
49 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
7天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
53 6
|
7天前
|
jenkins Java 持续交付
Docker搭建持续集成平台Jenkins最简教程
Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台。
148 2
|
7天前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成(5/5)
Docker Swarm总结+Jenkins安装配置与集成(5/5)
62 0

热门文章

最新文章