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搭建和管理企业级网站应用
目录
打赏
0
1
1
1
15
分享
相关文章
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
225 2
DevOps实践:自动化部署与持续集成的实现之旅
本文旨在通过一个实际案例,向读者展示如何将DevOps理念融入日常工作中,实现自动化部署和持续集成。我们将从DevOps的基础概念出发,逐步深入到工具的选择、环境的搭建,以及流程的优化,最终实现一个简单而高效的自动化部署流程。文章不仅提供代码示例,更注重于实践中的思考和问题解决,帮助团队提高软件开发和运维的效率。
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
336 8
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
139 8
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为一种文化和实践,它倡导开发(Dev)与运维(Ops)之间的协作与整合。本文将引导读者了解如何通过自动化部署和持续集成(CI)的实践来提升软件交付的速度和质量。我们将探讨一些实用的工具和技术,以及它们是如何帮助团队高效地管理代码变更、测试和部署的。文章将不包含代码示例,但会详细解释概念和流程,确保内容的通俗易懂和条理性。
229 62
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
150 4
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
304 4
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
207 2

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等