:CI/CD 是什么,GitHub Actions 自动测试和部署到底怎么做)
很多项目只停留在“我本地能跑”。但真正工程化的项目代码提交后应该能自动测试、自动检查、甚至自动部署。这就是 CI/CD 的价值。【一、CI/CD 是什么】CI 是 Continuous Integration持续集成。CD 可以是 Continuous Delivery 或 Continuous Deployment持续交付或持续部署。简单理解提交代码- 自动安装依赖- 自动运行测试- 自动检查格式- 自动构建镜像- 自动部署到服务器它的核心不是炫技而是减少人工操作带来的失误。【二、为什么秋招项目要有 CI】因为 CI 能证明你不是只写 demo。一个有 CI 的项目说明你至少考虑了- 代码提交后能不能跑。- 测试是否通过。- 依赖是否完整。- 新改动有没有破坏原功能。- 项目是否具备工程化意识。在 GitHub 上看到绿色的 Actions比 README 里空喊“工程化”更有说服力。【三、GitHub Actions 是什么】GitHub Actions 是 GitHub 自带的自动化工作流工具。你可以在仓库里创建.github/workflows/test.yml每次 push 或 pull request 时自动执行。【四、Python 项目测试工作流】一个简单的测试配置name: teston:push:branches: [main]pull_request:branches: [main]jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkoutv4- uses: actions/setup-pythonv5with:python-version: 3.11- name: Install dependenciesrun: |python -m pip install --upgrade pippip install -r requirements.txt- name: Run testsrun: |pytest -q这个流程会在 Ubuntu 环境里拉代码、装 Python、装依赖、跑测试。【五、要跑哪些检查】后端项目常见检查- 单元测试pytest。- 接口测试FastAPI TestClient。- 代码格式black、ruff。- 类型检查mypy。- 安全扫描检查依赖漏洞或密钥泄漏。- Docker 构建确认镜像能构建成功。初学项目不用一口气全加先保证 pytest 能跑通。【六、自动部署怎么做】自动部署一般流程push 到 main- CI 测试通过- 构建 Docker 镜像- 推送镜像- 服务器拉取新镜像- 重启服务也可以通过 SSH 到服务器执行部署脚本。但秋招项目里不一定非要做完整自动部署。你至少要有自动测试和 Docker 构建。【七、Secrets 怎么用】部署需要密钥比如服务器地址、SSH Key、Docker Token。这些不能写在 yml 里要放 GitHub Secrets。Settings - Secrets and variables - Actions代码里通过${{ secrets.SERVER_HOST }}引用。【八、常见坑】- 本地测试通过CI 失败因为依赖没写进 requirements。- 把密钥写进 workflow 文件。- 测试依赖真实外部 API导致不稳定。- 没有区分测试环境和生产环境。- CI 只装依赖不跑测试等于摆设。【九、面试常问】1. CI/CD 有什么作用CI/CD 可以在代码提交后自动完成测试、检查、构建和部署减少人工操作错误提高交付稳定性。2. GitHub Actions 的 workflow 放在哪里放在仓库的 .github/workflows/ 目录下通常是 yml 文件。3. CI 里为什么不要直接使用真实生产密钥因为 CI 日志和配置可能泄漏敏感信息。密钥应该放在 GitHub Secrets并且测试环境应尽量使用 mock 或测试配置。