build: 调整 JaCoCo 覆盖率检查配置 #7

Merged
zhangxiang merged 29 commits from dev into main 2026-05-06 19:43:41 +08:00
Showing only changes of commit ddf8ad0d4b - Show all commits
Vendored
+64 -4
View File
@@ -181,20 +181,81 @@ pipeline {
stage('E2E测试') {
steps {
echo '🎭 执行E2E测试...'
sh '''
# 启动测试数据库
docker run -d --name e2e-postgres-${BUILD_NUMBER} \
-e POSTGRES_DB=${DB_NAME} \
-e POSTGRES_USER=${DB_USER} \
-e POSTGRES_PASSWORD=${DB_PASSWORD} \
-p 5433:5432 \
postgres:16-alpine
# 等待数据库就绪
for i in $(seq 1 30); do
if docker exec e2e-postgres-${BUILD_NUMBER} pg_isready -U ${DB_USER} -d ${DB_NAME} > /dev/null 2>&1; then
echo "数据库已就绪"
break
fi
echo "等待数据库启动... ($i/30)"
sleep 2
done
# 启动后端服务
docker run -d --name e2e-backend-${BUILD_NUMBER} \
--link e2e-postgres-${BUILD_NUMBER}:postgres \
-e SPRING_R2DBC_URL=r2dbc:postgresql://postgres:5432/${DB_NAME} \
-e SPRING_R2DBC_USERNAME=${DB_USER} \
-e SPRING_R2DBC_PASSWORD=${DB_PASSWORD} \
-e SPRING_FLYWAY_URL=jdbc:postgresql://postgres:5432/${DB_NAME} \
-e SPRING_FLYWAY_USER=${DB_USER} \
-e SPRING_FLYWAY_PASSWORD=${DB_PASSWORD} \
-p 8081:8080 \
${DOCKER_REGISTRY}/${DOCKER_IMAGE_BACKEND}:latest || true
# 等待后端就绪
for i in $(seq 1 60); do
if curl -sf http://localhost:8081/actuator/health > /dev/null 2>&1; then
echo "后端服务已就绪"
break
fi
echo "等待后端启动... ($i/60)"
sleep 3
done
'''
dir(FRONTEND_DIR) {
sh '''
# 安装Playwright浏览器
pnpm exec playwright install --with-deps chromium
# 执行E2E测试
pnpm run test:e2e:journeys
# 执行E2E测试(带重试)
RETRY=0
MAX_RETRY=${RETRY_COUNT}
until [ $RETRY -ge $MAX_RETRY ]; do
pnpm run test:e2e:journeys && break
RETRY=$((RETRY+1))
echo "E2E测试第${RETRY}次重试..."
sleep 10
done
if [ $RETRY -ge $MAX_RETRY ]; then
echo "E2E测试在${MAX_RETRY}次重试后仍然失败"
exit 1
fi
'''
}
}
post {
always {
sh '''
# 清理E2E测试容器
docker stop e2e-backend-${BUILD_NUMBER} 2>/dev/null || true
docker rm e2e-backend-${BUILD_NUMBER} 2>/dev/null || true
docker stop e2e-postgres-${BUILD_NUMBER} 2>/dev/null || true
docker rm e2e-postgres-${BUILD_NUMBER} 2>/dev/null || true
'''
dir(FRONTEND_DIR) {
// 发布E2E测试报告
publishHTML(target: [
allowMissing: false,
alwaysLinkToLastBuild: true,
@@ -204,7 +265,6 @@ pipeline {
reportName: 'E2E测试报告'
])
// 归档测试失败截图和视频
archiveArtifacts artifacts: 'test-results/**/*.png, test-results/**/*.webm', allowEmptyArchive: true
}
}