Skandy01/CICD_Based_React-Todo-App
GitHub: Skandy01/CICD_Based_React-Todo-App
以简单的全栈 Todo 应用为载体,展示如何构建包含安全扫描、质量门禁、审批控制和 VM 部署的企业级 DevSecOps 持续交付流水线。
Stars: 0 | Forks: 0
# 🚀 生产级 DevSecOps CI/CD 流水线
**使用 Azure DevOps 和 GitHub Actions 进行全栈应用交付**
## 为什么创建此仓库
在大多数公司中,构建应用程序是容易的部分。
**安全、可靠且可扩展地交付它** —— 这才是真正的挑战。
此仓库**特意**设计为包含一个**简单的应用程序**,但配备**极其健壮、生产级的流水线**。
- **应用程序**有意保持最小化。
- **流水线**经过精心设计,复杂且具备企业级就绪能力。
重点 = **DevSecOps、质量门禁、制品治理、审批工作流以及基于 VM 的部署** —— 而不是花哨的 UI 功能。
## 🧠 解决的现实世界问题
现代交付团队经常面临以下困扰:
- **易受攻击的依赖项**混入生产环境
- 前端、后端、Docker 和 YAML 之间的**质量不一致**
- **缺乏可审计性**和人工审批控制
- 向长期环境(VMs、EC2 等)的**可靠部署**
- **在速度与安全合规之间取得平衡**
此仓库准确展示了如何利用行业最佳实践解决上述所有问题。
## 🏗️ 应用程序概览(仅作为载体)
| 层级 | 技术 | 用途 |
|----------------|-----------------------------|-----------------------------|
| **Frontend** | React + Vite | 现代 SPA |
| **Backend** | Python FastAPI | REST API |
| **Container** | Docker | 一致的打包 |
| **Deployment** | Azure Virtual Machines | 真实世界的 VM 目标 |
| **Extensible** | AWS EC2, Kubernetes, AKS | 易于适配 |
## 🔄 此仓库展示的内容(核心价值)
这**不是**一个玩具/演示流水线。这是一个**生产级交付流水线**,反映了顶级公司实际运行的内容。
### ✅ 展示的企业级能力
- 多阶段流水线架构
- 软件成分分析 (SCA)
- 静态应用程序安全测试 (SAST)
- 全面的 Linting 和质量强制执行
- 不可变制品策略
- 人工审批门禁 + 环境保护
- 基于 VM 的部署自动化
- 无 Secret 仓库(一切通过 Variable Groups 和 Service Connections)
## 🧩 CI/CD 架构
**主流水线:** `.azure-pipelines/production-grade-pipeline.yml`
流水线被划分为**清晰、可审计的阶段**:
### 流水线阶段
1. **软件成分分析**
- 使用 **Retire.js** 进行依赖漏洞扫描(前端 + 后端)
2. **静态代码分析**
- 使用 **SonarQube / SonarCloud** 检查代码质量、Bug、安全热点和技术债务
3. **代码质量与 Linting**(在适当情况下非阻塞)
- Frontend: ESLint + Stylelint + Biome
- Backend: PyLint + Black + isort
- Docker: Hadolint
- Docs: MarkdownLint + YAMLlint
4. **构建与制品打包**
- Frontend → 版本化构建制品
- Backend → 版本化 Python 包 + Docker 镜像(可选)
5. **审批门禁**
- 使用 **Azure DevOps Environments** 进行人工验证(变更控制 + 审计)
6. **部署到 Dev / Staging / Prod**
- 安全复制到 VM Web 目录
- 使用 systemd 重启后端服务
- 健康检查验证
## 📦 部署策略
- **CI** 生成不可变的、版本化的制品
- **CD** 仅使用这些制品(在发布阶段不重新构建)
- 使用 **Azure DevOps Environments** 进行部署门禁和历史记录
- 在 **Azure VMs**、**AWS EC2** 甚至裸机上工作方式完全相同
非常适合仍在运行混合/旧式 VM 集群的公司。
## 🔐 安全与治理(零妥协)
- **绝不**向 Git 提交任何 **Secrets**
- 所有凭据通过以下方式管理:
- Azure DevOps **Variable Groups**
- **Service Connections**(Azure RM, GitHub 等)
- 计划升级:**OIDC + Workload Identity Federation**(无密码 Azure 访问)
每次部署都是完全可审计的。
## 🧭 设计决策与权衡(我们为什么这样做)
| 决策 | 原因 | 权衡 |
|-----------------------------|---------------------------------------------|------------------------------------|
| 基于 VM 的部署 | 反映真实的企业环境 | 非 Kubernetes 原生(设计如此) |
| 非阻塞 Linting | 对开发者友好,同时保持可见性 | 问题可见但不会导致 CI 失败 |
| 人工审批门禁 | 受监管/企业环境中的必备条件 | 轻微延迟(有意为之) |
| 简单的应用代码 | 100% 专注于流水线和 DevSecOps | 不是功能丰富的演示应用 |
## 🔮 未来增强功能(路线图)
- [ ] Kubernetes 部署阶段 (AKS/EKS)
- [ ] OIDC 联合身份验证
- [ ] 同一流水线的 GitHub Actions 版本(跨平台)
- [ ] 用于 VM 预配的 Terraform 基础设施即代码
- [ ] 多区域蓝绿部署
- [ ] DAST + 运行时安全扫描
## 👤 作者
**Skand Tripathi**
*DevOps 工程师 | CI/CD | Terraform | Azure | DevSecOps 专家*
## ⭐ 如何使用此仓库
1. Fork / clone 此仓库
2. 更新 Azure DevOps 服务连接和变量组
3. 导入 `production-grade-pipeline.yml`
4. 观看完整的 DevSecOps 魔法自动发生
**这就是真正的公司安全交付的方式。**
不仅仅是“在我的机器上能运行” —— 而是**“在生产环境中通过治理运行”**。
**献给希望提升交付水平的团队,用 ❤️ 制作。**
*如果这帮助您理解了企业级流水线,请随时给仓库一个 Star ⭐!*
标签:AV绕过, Azure DevOps, Azure 虚拟机, CISA项目, DevSecOps, Docker, FastAPI, GitHub Actions, NIDS, Python, React, Syscalls, Todo App, Vite, 上游代理, 企业级, 制品管理, 前端, 后端, 安全管道, 安全防御评估, 审批工作流, 容器化, 开源框架, 持续交付, 持续集成, 无后门, 最佳实践, 特权提升, 生产级, 自动化部署, 自动笔记, 自定义脚本, 请求拦截, 质量门禁, 逆向工具