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








































































相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
64 2
|
15天前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
56 12
|
1月前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
1月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
44 4
|
1月前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
1月前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
1月前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
74 4
|
1月前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
4月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。