3.2 KiB
3.2 KiB
Gitea(Docker)落地:分支保护 + Actions/Runner + OpenAPI 全量门禁(操作手册)
本文档用于在新环境/新机器上从零落地本仓库的“规范驱动 + 接口先行”门禁体系,确保换环境后无需重新摸索。
0. 目标与产物
落地后应满足:
main禁止直接 push,仅允许 PR 合并- PR 合并到
main时自动运行 Actions(全量门禁) - 环境无法访问 GitHub 时也能正常运行校验
仓库内相关文件(必须存在于 main):
agents.md:AI 编码总纲spec/contracting.md:契约标准scripts/*.sh:核心校验脚本(Level/Traceability/Diff).gitea/workflows/pr-check.yaml:全量门禁工作流
1. Gitea Actions 基础建设
按照 docs/setup-gitea-actions-gate.md 中的步骤完成:
- Gitea 配置:在
app.ini中启用[ACTIONS] ENABLED = true。 - Runner 部署:启动
gitea/act_runner:latest容器并成功注册到 Gitea。 - 内网连接:使用宿主机内网 IP 作为
GITEA_INSTANCE_URL。
2. 启用全量自动化门禁
2.1 门禁项列表
当前的 .gitea/workflows/pr-check.yaml (Job ID: sdd-full-gate) 包含以下检查:
| 门禁项 | 脚本位置 | 检查逻辑 | 失败处理 |
|---|---|---|---|
| 1. 契约成熟度 | check-openapi-level.sh |
校验 info.x-contract-level。合并 main 必须 ≥ L2。 |
AI 需更新 OpenAPI 文件等级。 |
| 2. 需求追踪 | check-traceability.sh |
校验代码中的 [AC-ID] 是否在 requirements.md 中定义过。 |
AI 需补充需求文档或修正代码注释。 |
| 3. Breaking Change | check-openapi-diff.sh |
对比 main 分支,拦截被删除的 Endpoint 或 Method。 |
AI 需还原破坏性变更或与人类确认。 |
| 4. 最小自测 | 内置命令 | 执行 mvn test(Java)。若 Runner 环境无 mvn 则跳过并提示。 |
AI 需修复单测或编译错误。 |
2.2 在 Gitea 中开启硬约束
- 触发第一次运行:新建一个 PR 到
main(修改src/或spec/下的文件)。 - 配置分支保护:
- 进入
仓库设置 -> 分支 -> 保护分支(main)。 - 勾选 “启用状态检查”。
- 在输入框中填入:
sdd-full-gate。 - 保存。
- 进入
3. 常见排障与优化
3.1 离线环境报错
如果报错 GITEA_SERVER_URL is required,请确认已合并最新的 .gitea/workflows/pr-check.yaml。当前版本已支持自动探测 GITHUB_ 与 GITEA_ 系列变量。
3.2 Maven (mvn) 找不到
如果日志提示 Warning: mvn not found,说明你的 Runner 镜像(ubuntu-latest)没有预装 Maven。
- 短期:脚本会自动跳过,不阻断合并。
- 长期建议:定制 Docker 镜像或在宿主机安装 Maven 并卷入容器。
3.3 Python yaml 模块缺失
脚本会自动尝试 pip install pyyaml。如果依然失败,YAML 语法解析步骤将自动跳过,不影响核心契约校验。
4. 关联文档入口
agents.md:AI 实时遵循的提交与编码节奏。docs/contracting-guide.md:契约治理与 Gitea 避坑指南。docs/session-handoff-protocol.md:复杂任务接续协议。