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]: 动态传递测试用例执行的结果路径。








































































相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
90 0
|
10月前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
7月前
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
605 8
|
8月前
|
Java jenkins 持续交付
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
213 8
|
9月前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
170 12
|
10月前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
10月前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
10月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
179 4
|
11月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
10月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
310 0

推荐镜像

更多