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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 在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]: 动态传递测试用例执行的结果路径。








































































相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
20天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
43 2
|
7天前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
16 4
|
12天前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
16天前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
295 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
376 4
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
327 1
|
5月前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
172 2
|
5月前
|
监控 前端开发 Java
五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
|
4月前
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成

热门文章

最新文章