当前位置: 首页 > news >正文

jenkins pipline 自动化测试

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

pipeline {
    agent any
    environment {
        // 定义环境变量
        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 插件获得更直观的流水线可视化效果。

相关文章:

  • 案例驱动的 IT 团队管理:创新与突破之路:第三章 项目攻坚:从流程优化到敏捷破局-3.1.2需求分级与资源调配策略
  • 海康SDK协议在智联视频超融合平台中的接入方法
  • springboot+自定义注解+AOP实现权限控制(一)
  • EasyRTC嵌入式音视频通话SDK:如何解决跨平台(Linix、Windows、ARM、物联网)、跨设备(Android、ios等)的兼容性难题?
  • 前端Vue3图像编辑功能(并生成mask图)
  • 我在哪,要去哪
  • Zbrush插件安装
  • Android Studio最后一个绑定JDK8的版本,但是官方下载是最新的,怎么下载Android Studio历史版本包,这篇文章帮你解决。
  • Java进阶核心技术解析:多线程、集合框架与反射深度实战
  • 车载网络测试【E2E-AUTOSAR E2E Profile 1】
  • 4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
  • Docker搭建MySQL主从服务器
  • 电商无人直播防封指南:三要素构建智能防护(场景切换/实时互动/自动审核)
  • JavaScript日期区间计算
  • Docker换源加速(更换镜像源)详细教程(2025.3最新可用镜像,全网最详细)
  • Using SAP S4hana An Introduction for Business Users
  • 【机器学习-回归算法】
  • 宝石PDF,全新 PC 版本,全部免费
  • 本专栏开栏通知相关申明
  • 【电脑技巧】剪切板增强工具Ditto(详细介绍)
  • 北京航空航天大学首个海外创新研究院落户巴西
  • 为惩戒“工贼”,美国编剧工会“痛下杀手”
  • 巴基斯坦全国航班仍持续延误或取消
  • 民企老板被错羁212天续:申请国赔千万余元,要求恢复名誉赔礼道歉
  • “应急侠”上线,应急管理部正式发布应急科普IP形象
  • 上海与世界|环城生态公园带是上海绿色发展新名片