CI 是一个很关键的工程概念,你后面做项目一定会用到。
🎯 一句话解释
👉 CI = Continuous Integration(持续集成)
意思是:
代码一有变化,就自动帮你编译、测试、检查有没有问题
🧠 用你现在的开发场景理解(ESP32)
你现在流程可能是这样:
text
改代码 → 手动编译 → 手动烧录 → 看有没有问题
👉 问题:
- 忘了编译?
- 改坏了别人代码?
- 不同人环境不一致?
🚀 加上 CI 之后
text
你提交代码(git push)
↓
CI 自动执行:
- 编译(idf.py build)
- 检查错误
- 运行测试
↓
结果告诉你:成功 / 失败
👉 你不用手动盯着
🛠️ 常见 CI 工具
- GitHub Actions
- GitLab CI
- Jenkins
📦 一个最简单的 CI 示例(ESP-IDF)
比如你写个 GitHub Actions:
yaml
name: ESP32 Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: idf.py build
👉 效果:
- 每次 push 自动编译
- 编译不过直接报错
🔥 CI 能干啥(重点)
✅ 自动编译
防止代码提交后"编译不过"
✅ 自动测试
比如:
- 单元测试
- 通信测试
✅ 代码规范检查
比如:
- 格式
- 静态分析
✅ 自动生成固件
text
build → 输出 firmware.bin
🆚 和你刚学的 Build System 关系
👉 很多人搞混,这里帮你理清:
| 名词 | 作用 |
|---|---|
| Build System | 本地编译(CMake / Make) |
| CI | 自动帮你跑 Build System |
👉 关系:
text
CI = 自动化运行构建系统
📌 再通俗点
👉 CI 就像:
你有个"机器人同事",
你一提交代码,它就帮你:
- 编译
- 测试
- 告诉你有没有问题
🎯 为什么大公司必须用 CI?
因为:
- 多人开发(10+人)
- 不可能靠人盯
- 必须自动保证质量
🚀 给你一个进阶建议(很重要)
你现在这个阶段可以这样升级:
👉 给你的 ESP32 项目加 CI:
- 自动
idf.py build - 自动生成
.bin - 自动检查代码
👉 这一步做完,你就已经不是"普通嵌入式开发"了
🧠 最后一条总结
👉
CI = 自动化验证你代码是否"还能正常工作"的系统
如果你想,我可以直接帮你写一套:
👉 "ESP32项目 + GitHub Actions + 自动编译 + 固件输出"
你直接复制就能用(很实战)