Files
his/docs/specs/cicd-gatekeeper.md
chenlin 0076753c19 docs: 添加三份构建门禁相关文档
- 《前端发布前检查清单》
- 《CI/CD构建门禁规范》
- 《代码提交变更说明模板》

为解决getDepartmentList导入错误等构建问题提供标准化文档支持
2026-04-24 17:04:42 +08:00

3.1 KiB
Raw Blame History

CI/CD构建门禁规范

🎯 规范目标

建立自动化质量门禁,确保每次代码提交都经过严格验证,防止低质量代码进入主干分支,提升系统稳定性和开发效率。

🔒 门禁层级

1. 提交前门禁Pre-commit

触发时机git commit 执行前
验证内容

  • ESLint 代码规范检查
  • Prettier 代码格式化
  • 简单的单元测试(快速执行)

工具配置

  • Husky + lint-staged
  • 配置文件:.husky/pre-commit

2. 推送前门禁Pre-push

触发时机git push 执行前
验证内容

  • 完整的单元测试套件
  • 构建验证(npm run build
  • 集成测试(核心流程)

工具配置

  • Husky pre-push hook
  • 配置文件:.husky/pre-push

3. CI流水线门禁CI Pipeline

触发时机:代码推送到远程仓库后
验证内容

  • 完整的测试套件(单元+集成+端到端)
  • 代码覆盖率检查≥80%
  • 安全扫描SAST
  • 构建产物验证
  • 部署到测试环境

工具配置

  • Spug CI/CD 流水线
  • Gitea Webhook 触发

4. 发布前门禁Release Gate

触发时机:准备发布到生产环境前
验证内容

  • 生产环境冒烟测试
  • 性能基准测试
  • 安全合规检查
  • 回滚预案验证

⚙️ 具体配置要求

ESLint 配置

// .eslintrc.js 关键配置
module.exports = {
  plugins: ['import'],
  rules: {
    // 确保导入的模块实际存在
    'import/no-unresolved': 'error',
    // 确保导入的成员实际存在
    'import/named': 'error',
    // 禁止未使用的导入
    'import/no-unused-modules': 'warn'
  }
};

Husky 配置

# .husky/pre-commit
#!/bin/sh
npm run lint-staged

# .husky/pre-push  
#!/bin/sh
npm run test:unit && npm run build

lint-staged 配置

// package.json
{
  "lint-staged": {
    "*.{js,vue}": ["eslint --fix", "prettier --write"],
    "*.{css,scss}": ["stylelint --fix", "prettier --write"]
  }
}

🚫 失败处理机制

自动处理

  • 构建失败:自动阻止 PR 合并
  • 测试失败:标记 PR 为失败状态
  • 安全漏洞:立即通知安全团队

人工处理

  • 紧急修复:可申请临时绕过(需架构师批准)
  • 误报处理:提交豁免申请并说明原因
  • 规则调整:通过 RFC 流程申请规则变更

📊 监控与度量

关键指标

  • 门禁通过率 ≥ 95%
  • 平均修复时间 ≤ 2小时
  • 误报率 ≤ 5%

报告机制

  • 每日门禁失败统计
  • 周度质量趋势报告
  • 月度规则优化建议

🔄 持续改进

规则演进

  • 每月评审门禁规则有效性
  • 根据项目需求调整检查强度
  • 引入新的质量检查工具

团队培训

  • 新成员入职培训包含门禁规范
  • 定期分享最佳实践案例
  • 建立常见问题解决方案库

文档版本v1.0
最后更新2026年4月24日
负责人:陈琳(文档专家)
技术方案:诸葛亮(架构师)
适用范围HIS 系统所有项目