chore: 更新Docker和CI配置

- 更新Woodpecker CI配置
- 更新Docker Compose配置
- 更新应用主类配置
- 更新网关路由服务
- 更新审计日志相关代码
This commit is contained in:
张翔
2026-04-15 23:38:03 +08:00
parent 38dc055a27
commit 60fb84e306
11 changed files with 398 additions and 204 deletions
+125 -71
View File
@@ -1,99 +1,153 @@
# Woodpecker CI/CD 流水线配置
# TDD工作流规范 - 质量门禁配置
# Woodpecker CI/CD 流水线配置 - 企业级质量门禁
# 基于Docker化部署的完整CI/CD流水线
pipeline:
# 后端单元测试和集成测试
# 代码质量检查阶段
code-quality:
group: 质量检查
image: maven:3.9-openjdk-21
commands:
- echo "🔍 开始代码质量检查..."
- cd novalon-manage-api
- echo "📊 运行静态代码分析..."
- mvn spotbugs:check
- echo "📏 检查代码规范..."
- mvn checkstyle:check
- echo "📈 生成代码质量报告..."
- mvn pmd:check
- echo "✅ 代码质量检查完成"
when:
event: [push, pull_request]
# 后端测试阶段
test-backend:
group: 后端测试
image: maven:3.9-openjdk-21
commands:
- echo "🚀 开始后端测试..."
- cd novalon-manage-api
- echo "🧪 运行单元测试..."
- mvn clean test jacoco:report
- echo "✅ 后端测试完成,生成覆盖率报告"
- echo "📊 生成测试覆盖率报告..."
- mvn jacoco:check
- echo "✅ 后端测试完成,覆盖率: $(cat target/site/jacoco/jacoco.xml | grep -oP 'lineCoverage=\"\K[0-9.]+')%"
when:
event: [push, pull_request]
# 构建后端JAR文件(用于E2E测试)
build-backend-jar:
image: maven:3.9-openjdk-21
# 前端测试阶段
test-frontend:
group: 前端测试
image: node:20
commands:
- echo "📦 构建后端JAR文件..."
- cd novalon-manage-api/manage-app
- mvn clean package -DskipTests
- echo "✅ JAR文件构建完成: target/manage-app-1.0.0.jar"
when:
event: [push, pull_request]
# 前端单元测试
test-frontend-unit:
image: node:18
commands:
- echo "🚀 开始前端单元测试..."
- echo "🚀 开始前端测试..."
- cd novalon-manage-web
- echo "📦 安装依赖..."
- npm ci
- echo "🧪 运行单元测试..."
- npm run test:unit
- echo "✅ 前端单元测试完成"
- echo "📏 检查代码规范..."
- npm run lint
- echo "✅ 前端测试完成"
when:
event: [push, pull_request]
# 前端E2E测试
test-frontend-e2e:
image: mcr.microsoft.com/playwright:v1.40.0-jammy
environment:
- DISPLAY=:99
# Docker化构建阶段
docker-build:
group: 容器化构建
image: docker:24
volumes:
- /var/run/docker.sock:/var/run/docker.sock
commands:
- echo "🚀 开始前端E2E测试..."
- echo "🐳 开始Docker化构建..."
- echo "📦 构建后端镜像..."
- docker build -t novalon/backend:${CI_COMMIT_SHA:0:8} -f novalon-manage-api/Dockerfile ./novalon-manage-api
- echo "🌐 构建前端镜像..."
- docker build -t novalon/frontend:${CI_COMMIT_SHA:0:8} -f novalon-manage-web/Dockerfile ./novalon-manage-web
- echo "✅ Docker镜像构建完成"
when:
event: [push]
branch: [main, develop]
# 集成测试阶段(使用Docker Compose
integration-test:
group: 集成测试
image: docker:24
volumes:
- /var/run/docker.sock:/var/run/docker.sock
commands:
- echo "🧪 开始集成测试..."
- echo "🐳 启动测试环境..."
- docker-compose -f docker-compose.test.yml up -d
- echo "⏳ 等待服务就绪..."
- sleep 60
- echo "🔍 检查服务健康状态..."
- curl -f http://localhost:8085/actuator/health || (docker-compose -f docker-compose.test.yml logs && exit 1)
- curl -f http://localhost:3002 || (docker-compose -f docker-compose.test.yml logs && exit 1)
- echo "✅ 集成测试环境就绪"
when:
event: [push]
branch: [main, develop]
# E2E测试阶段
e2e-test:
group: E2E测试
image: mcr.microsoft.com/playwright:v1.58.2-jammy
commands:
- echo "🎭 开始E2E测试..."
- cd novalon-manage-web
- echo "📦 安装依赖..."
- npm ci
- echo "🔧 安装浏览器..."
- npx playwright install --with-deps chromium
- echo "📦 启动后端服务..."
- cd ../novalon-manage-api/manage-app
- java -jar target/manage-app-1.0.0.jar --spring.profiles.active=test &
- BACKEND_PID=$!
- cd ../../novalon-manage-web
- echo "⏳ 等待后端服务就绪..."
- |
for i in {1..60}; do
if curl -f http://localhost:8084/actuator/health > /dev/null 2>&1; then
echo "✅ 后端服务就绪"
break
fi
sleep 1
done
- echo "🎭 运行Playwright测试..."
- npx playwright test --project=chromium
- echo "🛑 停止后端服务..."
- kill $BACKEND_PID || true
- echo "🧪 运行E2E测试..."
- npx playwright test --project=journeys --reporter=html,json,junit
- echo "✅ E2E测试完成"
when:
event: [push, pull_request]
# 质量门禁检查
quality-gates:
image: maven:3.9-openjdk-21
event: [push]
branch: [main, develop]
# 安全扫描阶段
security-scan:
group: 安全扫描
image: aquasec/trivy:latest
commands:
- echo "🔍 开始质量门禁检查..."
- cd novalon-manage-api
- mvn jacoco:check
- echo "✅ 测试覆盖率检查通过"
- echo "✅ 所有测试用例通过"
- echo "✅ 代码规范检查通过"
- echo "🔒 开始安全扫描..."
- echo "📊 扫描后端镜像..."
- trivy image novalon/backend:${CI_COMMIT_SHA:0:8}
- echo "📊 扫描前端镜像..."
- trivy image novalon/frontend:${CI_COMMIT_SHA:0:8}
- echo "✅ 安全扫描完成"
when:
event: [pull_request]
# 构建阶段
build:
image: maven:3.9-openjdk-21
event: [push]
branch: [main, develop]
# 部署阶段
deploy:
group: 部署
image: alpine:latest
commands:
- echo "📦 开始构建..."
- cd novalon-manage-api
- mvn clean package -DskipTests
- echo "✅ 构建成功"
- echo "🚀 开始部署..."
- echo "📦 推送镜像到仓库..."
- docker tag novalon/backend:${CI_COMMIT_SHA:0:8} ${DOCKER_REGISTRY}/novalon/backend:${CI_COMMIT_SHA:0:8}
- docker tag novalon/frontend:${CI_COMMIT_SHA:0:8} ${DOCKER_REGISTRY}/novalon/frontend:${CI_COMMIT_SHA:0:8}
- docker push ${DOCKER_REGISTRY}/novalon/backend:${CI_COMMIT_SHA:0:8}
- docker push ${DOCKER_REGISTRY}/novalon/frontend:${CI_COMMIT_SHA:0:8}
- echo "✅ 部署完成"
when:
event: [push]
branch: [main]
# 清理阶段
cleanup:
group: 清理
image: docker:24
volumes:
- /var/run/docker.sock:/var/run/docker.sock
commands:
- echo "🧹 开始清理..."
- docker-compose -f docker-compose.test.yml down -v
- docker system prune -f
- echo "✅ 清理完成"
when:
event: [push]
branch: [main, develop]