以下是一个典型的 Jenkins Pipeline 示例,用于执行自动化测试流程(支持单元测试、集成测试、代码质量扫描),包含多阶段执行和测试结果处理:
groovy
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: '[email protected]'
}
failure {
// 测试失败通知
emailext body: '${PROJECT_NAME} 自动化测试失败,详情:${BUILD_URL}console',
subject: 'FAILED: ${PROJECT_NAME} Build ${BUILD_NUMBER}',
to: '[email protected]'
}
}
}
关键配置说明:
-
环境准备:
- 安装必要插件:
- Pipeline
- JUnit
- Allure
- Email Extension
- SonarQube Scanner
- 配置全局工具(JDK/Maven/npm等)
- 安装必要插件:
-
流程设计:
-
并行优化 :可将单元测试和代码质量检查改为并行执行
groovystage('Parallel Stages') { parallel { stage('Unit Tests') { ... } stage('Code Quality') { ... } } }
-
动态参数 :可通过
parameters
块添加分支选择等参数
-
-
测试报告集成:
- JUnit:自动解析XML报告显示趋势图
- Allure:生成交互式测试报告(需提前配置Allure命令行工具)
- SonarQube:代码质量门禁检查
-
通知机制:
-
邮件通知(推荐使用HTML模板)
-
可扩展Slack/MS Teams通知:
groovyslackSend channel: '#automation', message: "Build ${currentBuild.result}: ${env.JOB_NAME} ${env.BUILD_NUMBER}"
-
项目适配建议:
-
Java项目:
groovy// Maven命令示例 sh 'mvn test' junit '**/surefire-reports/*.xml'
-
Node.js项目:
groovy// npm命令示例 sh 'npm run test:coverage' junit '**/junit.xml'
-
Python项目:
groovy// pytest示例 sh 'pytest --junitxml=test-results.xml' junit 'test-results.xml'
典型执行效果:
- 可视化阶段执行状态
- 自动关联测试报告
- 历史趋势分析(通过Jenkins图表)
- 邮件/Slack实时通知
建议根据实际项目结构调整测试命令和报告路径。可通过 Jenkins Blue Ocean 插件获得更直观的流水线可视化效果。