首先完成“选择托管平台:云服务、VPS 和平台即服务 (PaaS)”即可解锁本课程。转到上一课

为什么 CI/CD 对 AI 生成的应用至关重要

当 AI 工具生成你的应用代码后,你仍然需要一个可靠的方式来发布更新,同时避免破坏生产环境。CI/CD 流水线(持续集成 / 持续部署)会在你每次推送到 Git 仓库时自动运行检查并部署代码。对于 AI 生成的应用来说,这一点尤为关键,因为你通过 prompt 快速迭代时,代码也会随之频繁变动。

其原理很简单:每次你向仓库推送代码,都会触发一个工作流,自动构建应用、运行测试,并在一切通过后部署到你的托管平台(Vercel、Netlify、AWS 等)。从此你不再需要手动部署,也不再会把损坏的代码推送给用户。

什么是 GitHub Actions

GitHub Actions 是 GitHub 内置的自动化工具。你可以在仓库的 `.github/workflows` 目录中通过 YAML 文件定义工作流。每个工作流由某个事件触发(例如 push),并在一台虚拟机中依次执行一系列步骤。

一个 workflow 文件主要由三部分组成:触发器(何时运行)、runner(使用哪台机器)、以及 jobs(执行哪些任务)。下面是一个针对 Node.js 应用的最小示例:

yaml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run build
- run: npm test

该文件位于 `.github/workflows/deploy.yml`。当你向 `main` 分支推送代码时,GitHub 会启动一台 Ubuntu 机器,检出你的代码,安装依赖,构建项目,并运行测试。

添加自动化部署

上面的 build job 仅能验证你的代码是否可用。要真正发布应用,还需要添加一个部署步骤。大多数现代托管平台都提供了现成的 action,可以直接接入。例如使用 Vercel:

yaml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run build
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'

请注意 secrets 引用。敏感值(如 API token)应存储在 GitHub 仓库设置的 Secrets 和 Environment variables 中,切勿直接写在 workflow 文件里。`${{ secrets.NAME }}` 语法会在运行时读取 secret,但不会将其暴露在日志中。

CI/CD 流程图包括以下步骤:push 代码 → 触发 workflow → checkout 代码 → 安装依赖 → 运行 build → 运行测试 → 如果通过则部署到 production,如果失败则停止并通知

处理 AI 生成代码的特殊问题

AI 生成的代码往往带来一些额外的问题:依赖列表可能臃肿,甚至包含无用的包;代码可能在本地能跑,但在干净的环境上却失败,原因是缺少环境文件。以下是加固 pipeline 的实用步骤:

在 build 之前加入 lint 步骤,尽早捕获常见错误。明确固定你的 Node.js 或 runtime 版本。使用 actions/cache 来缓存依赖,让重复安装更快。对于应用运行时所需的环境变量,也要将它们添加为 secrets。

yaml
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- run: npm ci

在 CI 环境中使用 npm ci 而不是 npm install。ci 会严格读取 lock 文件,产出可复现的安装结果,能够捕获到 AI 生成的 package.json 与 package-lock.json 不一致的情况。

常见陷阱与修复方法

一个常见的错误是提交了 workflow 文件,却忘了在仓库设置中添加 secrets。此时 workflow 会因 "secret not found" 错误而失败。请进入 Settings → Secrets and variables → Actions 并逐一添加。

另一个陷阱是对每次 push 都进行部署,包括特性分支的 push。使用 `on` 块中的 branches 过滤器,仅限制为 main,或者为 pull request 增加一个独立的 preview 部署任务。

最后,需要注意运行在 fork 仓库 pull request 上的 workflow。由于安全原因,它们默认无法访问 secrets。如果你确实需要这种场景,请谨慎使用 `pull_request_target`,或者使用不需要 secrets 的免费版 preview 环境。

总结

一个稳健的、面向 AI 生成 Web 应用的 CI/CD pipeline,本质上只是仓库里的一个 YAML 文件:每次 push 时运行,干净地安装依赖,进行 build 和测试,然后使用存储好的 secrets 部署到你的托管平台。先从一个基础的 build-and-test workflow 开始,等拿到托管凭证后再加入部署步骤。请把 pipeline 本身也当作生产级基础设施,因为它决定着交付到用户手中的内容。

课后练习

课程检查点

巩固所学知识,获取作业反馈。

0/1
已回答 · 0/1