什么是CI/CD
为什么嵌入式需要CI/CD
与传统开发对比
核心收益与挑战
Git核心概念
GitFlow/GitHub Flow
.gitignore配置
标签与发布管理
Gitea/GitLab部署
SSH密钥配置
仓库权限管理
Webhook基础配置
Pull Request流程
Code Review最佳实践
嵌入式静态检查集成
合并策略选择
Jenkins/Docker安装
Jenkins Pipeline基础
Agent节点配置
交叉编译工具链集成
Dockerfile编写
多阶段构建
交叉编译环境容器化
镜像仓库管理
CMake/Makefile集成
构建参数化配置
构建产物管理
构建缓存优化
CUnit/Unity框架集成
测试用例编写
测试覆盖率统计
嵌入式Mock技术
Cppcheck/Clang-Tidy
MISRA C/C++规则检查
代码质量门禁
SonarQube部署
HIL测试概念
测试台架搭建
自动化测试脚本
测试报告生成
OpenOCD/JLink命令行
烧录脚本编写
批量烧录策略
烧录验证
部署策略设计
OTA升级流程
版本回滚机制
灰度发布实现
Artifactory/Nexus部署
固件版本管理
依赖包管理
制品签名与验证
开发/测试/生产隔离
环境变量管理
配置文件模板化
密钥管理
构建日志收集
ELK/EFK栈搭建
构建指标监控
告警规则配置
漏洞扫描工具集成
依赖安全检查
固件签名验证
SBOM生成
ARM/RISC-V/X86交叉编译
多架构镜像构建
模拟器测试
硬件抽象层测试
构建依赖分析
并行任务调度
分布式构建
构建资源管理
Jenkinsfile/GitLab CI YAML
流水线模板化
参数化流水线
流水线复用
Robot Framework集成
关键字驱动测试
测试数据驱动
测试报告可视化
嵌入式性能基准测试
内存泄漏检测
CPU占用率监控
实时性测试
Doxygen集成
API文档生成
变更日志自动生成
文档版本管理
功能安全ISO 26262
MISRA合规检查
认证文档管理
审计追踪
Repo/Git Submodule
依赖版本锁定
跨仓库流水线触发
统一版本号管理
GitHub Actions/GitLab CI
自托管Runner部署
云资源弹性伸缩
成本优化
边缘节点管理
离线部署策略
差分升级
边缘监控与运维
流水线失败分析
构建日志分析
常见错误处理
调试技巧
流水线权限管理
通知机制
代码规范自动化
团队工作流优化
STM32完整流水线搭建
流水线优化迭代
经验总结
从零到落地
AI在CI/CD中的应用
DevSecOps
GitOps
嵌入式CI/CD最佳实践