jenkins pipline 自动化测试

以下是一个典型的 Jenkins Pipeline 示例,用于执行自动化测试流程(支持单元测试、集成测试、代码质量扫描),包含多阶段执行和测试结果处理:

pipeline {agent anyenvironment {// 定义环境变量PROJECT_NAME = "my-project"TEST_RESULTS = "**/test-results/*.xml"ALLURE_REPORT = "allure-report"}stages {// 阶段1:代码检出stage('Checkout') {steps {git branch: 'main', url: 'https://github.com/your-org/${PROJECT_NAME}.git'}}// 阶段2:依赖安装stage('Install Dependencies') {steps {script {// 根据项目类型选择安装方式if (fileExists('pom.xml')) {sh 'mvn clean install -DskipTests'} else if (fileExists('package.json')) {sh 'npm install'}}}}// 阶段3:单元测试stage('Unit Tests') {steps {script {try {if (fileExists('pom.xml')) {sh 'mvn test' // Java项目} else if (fileExists('package.json')) {sh 'npm run test:unit' // Node.js项目}} finally {// 收集JUnit格式测试报告junit allowEmptyResults: true, testResults: '**/surefire-reports/*.xml'}}}}// 阶段4:集成测试stage('Integration Tests') {steps {script {// 启动测试环境(例如Docker compose)sh 'docker-compose -f docker-compose.test.yml up -d'// 执行集成测试sh './run-integration-tests.sh'// 收集集成测试报告junit '**/integration-test-results/*.xml'}}post {always {// 清理测试环境sh 'docker-compose -f docker-compose.test.yml down'}}}// 阶段5:代码质量检查stage('Code Quality') {steps {// 使用SonarQube进行代码扫描withSonarQubeEnv('sonar-server') {sh 'mvn sonar:sonar' // 或对应语言的扫描命令}}}// 阶段6:生成Allure报告stage('Allure Report') {steps {script {allure([includeProperties: false,jdk: '',properties: [],reportBuildPolicy: 'ALWAYS',results: [[path: 'allure-results']]])}}}}post {always {// 清理工作空间cleanWs()}success {// 测试成功通知emailext body: '${PROJECT_NAME} 自动化测试通过,报告地址:${BUILD_URL}Allure_20Report/',subject: 'SUCCESS: ${PROJECT_NAME} Build ${BUILD_NUMBER}',to: 'team@example.com'}failure {// 测试失败通知emailext body: '${PROJECT_NAME} 自动化测试失败,详情:${BUILD_URL}console',subject: 'FAILED: ${PROJECT_NAME} Build ${BUILD_NUMBER}',to: 'team@example.com'}}
}

关键配置说明:

  1. 环境准备

    • 安装必要插件:
      • Pipeline
      • JUnit
      • Allure
      • Email Extension
      • SonarQube Scanner
    • 配置全局工具(JDK/Maven/npm等)
  2. 流程设计

    • 并行优化:可将单元测试和代码质量检查改为并行执行
      stage('Parallel Stages') {parallel {stage('Unit Tests') { ... }stage('Code Quality') { ... }}
      }
      
    • 动态参数:可通过 parameters 块添加分支选择等参数
  3. 测试报告集成

    • JUnit:自动解析XML报告显示趋势图
    • Allure:生成交互式测试报告(需提前配置Allure命令行工具)
    • SonarQube:代码质量门禁检查
  4. 通知机制

    • 邮件通知(推荐使用HTML模板)
    • 可扩展Slack/MS Teams通知:
      slackSend channel: '#automation', message: "Build ${currentBuild.result}: ${env.JOB_NAME} ${env.BUILD_NUMBER}"
      

项目适配建议:

  1. Java项目

    // Maven命令示例
    sh 'mvn test' 
    junit '**/surefire-reports/*.xml'
    
  2. Node.js项目

    // npm命令示例
    sh 'npm run test:coverage'
    junit '**/junit.xml'
    
  3. Python项目

    // pytest示例
    sh 'pytest --junitxml=test-results.xml'
    junit 'test-results.xml'
    

典型执行效果:

  1. 可视化阶段执行状态
  2. 自动关联测试报告
  3. 历史趋势分析(通过Jenkins图表)
  4. 邮件/Slack实时通知

建议根据实际项目结构调整测试命令和报告路径。可通过 Jenkins Blue Ocean 插件获得更直观的流水线可视化效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP测试

一、APP测试范围 功能测试性能测试:CPU、内存占用、启动速度、流量、电量消耗、流畅度、稳定性专项测试:安装卸载升级、push消息推送 、交叉事件测试 、用户体验测试 、兼容性测试 二、APP包发布方式及策略 分类: 内部发布渠道。如&#x…

12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)

文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…

oracle 基础知识之 多表查询

多表查询定义:当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。 1.等值连接 等值连接也称为简单连接&#xf…

服务器防火墙根据什么特征来过滤数据包?

防火墙是服务器安全防护的第一道屏障,它的主要作用是监控、过滤和控制进出服务器的数据流量,防止恶意攻击、非法访问和数据泄露。防火墙通过分析数据包的特定特征来决定是否允许、拒绝或限制数据的传输。 服务器防火墙的基本工作原理: 防火墙…

Prims region.Views 为null

原因: 导航未完成或异步问题 解决方式:使用回调确认导航完成后再操作视图 _regionManager.RequestNavigate("MonitorRegion", "MonitorView", nps, navigationResult > {if (navigationResult.Result true){var region _regio…

reconstruct_3d_object_model_for_matching例子

文章目录 1.获取om3文件2.准备可视化3.准备3D可视化4.读取3D模型5.显示成对注册结果16.显示成对注册结果27.联合注册模型8.处理图像8.1子采样8.2 图像计算与平滑8.3 三角测量 9.基于表面做3D匹配10.评估模型准确度10.1 在场景中找到模型10.2 计算模型和场景之间的距离 11.立体系…

软件安全性测试的重要性和常用工具介绍,软件测试服务公司推荐

在当今数字化快速发展的时代,软件已经成为各行各业不可或缺的一部分。然而,随着软件系统的复杂性增加,安全性问题也愈发突出,因此软件产品生产周期中安全测试必不可少。软件安全性测试是指对软件系统进行评估,以发现潜…

Redis项目:短信验证码登录

这是黑马的黑马点评项目,短信验证码的业务。一开始是使用session做的,后来重构,使用redis缓存来完成。 第一层拦截器: public class RefreshTokenInterceptor implements HandlerInterceptor {private StringRedisTemplate stri…

Docker下载,包含Win、Mac

介绍 Docker 是一种开源的容器化平台,通过操作系统级虚拟化技术实现应用的快速开发、部署和运行。以下从多个维度对 Docker 进行详细介绍: 一、Docker 的核心概念与功能 容器化技术 Docker 利用 Linux 内核的容器隔离技术(如 Cgroups 和 Nam…

使用 ESP8266 和 Android 应用程序实现基于 IOT 的语音控制家庭自动化

使用 ESP8266 实现基于 IOT 的语音控制家庭自动化 欢迎来到另一个令人兴奋的项目,我们将使用 Wi-Fi 模块构建一个语音控制ESP8266家庭自动化系统,您可以在其中通过语音通过 Android 应用程序从世界任何地方控制您的家用电器。是的,您只需使用语音命令即可打开或关闭负载(L…

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解 一、三者的区别与关系 1. 官方迭代过程为: CustomDialog 》 OpenCustomDialog 》 DialogHub 迭代过程表明,弹框的调用越来越便捷,与UI解耦&…

【C++】stack和queue的使用及模拟实现(含deque的简单介绍)

文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍(引入…

Leetcode 刷题笔记1 图论part01

图论的基础知识: 图的种类: 有向图(边有方向) 、 无向图(边无方向)、加权有向图(边有方向和权值) 度: 无向图中几条边连接该节点,该节点就有几度&#xff1…

《基于Workspace.java的Launcher3改造:HotSeat区域动态阻断文件夹生成机制》

1. 需求背景与技术挑战 在Android 13系统Launcher3定制化开发中,需实现禁止HotSeat区域创建文件夹的功能。原始逻辑中,当用户拖拽应用图标至HotSeat区域相邻图标时,会触发FolderIcon的实例化。本文将深入分析Launcher3的文件夹创建机制&…

重生之我在学Vue--第14天 Vue 3 国际化(i18n)实战指南

重生之我在学Vue–第14天 Vue 3 国际化(i18n)实战指南 文章目录 重生之我在学Vue--第14天 Vue 3 国际化(i18n)实战指南前言一、Vue I18n 核心配置1.1 基础环境搭建1.2 初始化配置1.3 全局挂载 二、多语言实现方案2.1 基础使用2.2 动态切换语言2.3 高级功能实现复数处理日期/货币…

开源PACS(dcm4che-arc-light)部署教程,源码方式

目录 文件清单下载地址安装概述OpenLDAP、Apache Directory StudioWildflydcm4che 安装部署MySQL源码编译dcm4cheedcm4chee-arc-light OpenLDAP安装ApacheDirectoryStudio安装配置WildFly服务器 部署完成 文件清单 下载地址 Apache directory studio - linkOpenLDAP - linkdcm…

java使用(Preference、Properties、XML、JSON)实现处理(读写)配置信息或者用户首选项的方式的代码示例和表格对比

在Java应用程序中,处理应用首选项(preferences)有多种方法,包括使用java.util.prefs.Preferences类、属性文件(如.properties文件)、XML文件和JSON文件。下面是每种方法的详细说明和代码示例,最…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

dataframe数据形式操作中的diff和shift函数区别与对比

问题分析 从错误日志中可以看到,代码在 report_services.py 的 gnss_monthly_report 函数中出现了 ValueError,具体错误信息是: ValueError: either both or neither of x and y should be given这个错误发生在以下代码行: rep…

C语言动态内存管理(下)

欢迎拜访:雾里看山-CSDN博客 本篇主题:C语言动态内存管理(下) 发布时间:2025.3.18 隶属专栏:C语言 目录 动态内存常见错误内存泄漏(Memory Leak)典型场景后果解决方案 悬挂指针(Dangling Pointe…