用途
ln-732-cicd-generator 是一个 L3 工作单元(Worker),属于 7XX Project Bootstrap 分类。它用于为项目生成 GitHub Actions CI 流水线,实现自动化测试与校验。
该技能明确只做一件事:生成 .github/workflows/ci.yml,其中包含 lint、test、build、docker 等任务。它不做部署配置、不管理密钥、不设置 CD 流水线。
主要能力
技能根据项目技术栈选择模板并生成 CI 配置。模板分为两类:
- 检测到 .sln 或 .csproj 时,使用 github_ci_dotnet.template.yml
- 检测到 requirements.txt 或 pyproject.toml 时,使用 github_ci_python.template.yml
命令检测方式:
- 前端:读取 package.json 中的 lint、build、test 脚本
- .NET:标准 dotnet restore/build/test
- Python:pip install、ruff lint、pytest
使用方式
技能按以下阶段执行:
- 技术栈分析:确定使用哪个模板,并检测版本与命令。
- 变量替换:替换模板变量,包括 {{NODE_VERSION}}(默认 22)、{{DOTNET_VERSION}}(默认 9.0.x)、{{PYTHON_VERSION}}(默认 3.12)、{{FRONTEND_PATH}}(默认 src/frontend)。
- 目录创建:若 .github/workflows/ 不存在则创建。
- 文件生成:从所选模板生成 ci.yml,检查是否已存在(覆盖前给出警告),应用变量替换,写入 .github/workflows/ci.yml,并校验 YAML 语法。
生成的流水线结构
包含三个任务:
- frontend:对 React/Vite 执行 lint、build、test,无依赖。
- backend:构建并测试 .NET 或 Python,无依赖。
- docker:构建镜像并做健康检查,依赖 frontend 与 backend。
前端任务步骤:检出代码、安装带缓存的 Node.js、安装依赖(npm ci)、运行 linter(npm run lint)、构建(npm run build)、运行测试(npm test)。
后端 .NET 任务步骤:检出代码、安装 .NET SDK、还原依赖(dotnet restore)、构建(dotnet build)、运行测试(dotnet test)。
后端 Python 任务步骤:检出代码、安装带 pip 缓存的 Python、安装依赖(pip install -r requirements.txt)、运行 linter(ruff check)、运行测试(pytest)。
Docker 任务步骤:检出代码、构建镜像(docker compose build)、启动容器(docker compose up -d)、等待启动(30 秒)、前端健康检查(端口 3000)、后端健康检查(端口 5000/8000)、失败时显示日志、停止容器(docker compose down)。
触发事件:push 到 main、develop 分支;pull request 到 main 分支。
应用的最佳实践
- 依赖缓存:npm cache、pip cache
- 版本固定:actions/checkout@v4、setup-node@v4
- 并行任务:frontend 与 backend 并行运行
- 快速失败:docker 任务等待两者都成功
- 清理:docker compose down 始终执行
- 调试支持:失败时显示日志
质量要求
生成的流水线必须通过 YAML 语法校验、使用固定的 action 版本(不用 @latest)、包含依赖缓存、为 docker 任务提供健康检查、并在完成时清理资源。
限制与注意事项
- 仅支持 GitHub Actions:不支持 Azure 或 GitLab。
- 基于模板:使用 references/ 中的模板,不要硬编码工作流内容。
- 幂等:检查 .github/workflows/ 是否存在,覆盖 ci.yml 前给出警告。
- 版本检测:使用检测到的版本,而非硬编码默认值。
参考文件包括 github_ci.template.yml(带注释的完整模板)、github_ci_dotnet.template.yml(紧凑 .NET 模板)、github_ci_python.template.yml(紧凑 Python 模板)。
完成标准:生成 .github/workflows/ci.yml 并通过 YAML 校验;流水线包含 lint、build、test 和 docker 任务;所有 action 版本固定(不用 @latest)。版本 1.1.0,最后更新于 2026-01-10。