Gitea Issue DevOps Agent
+把 Issue 变成可追踪、可复用、可规模化的交付流水线
- 一个把 Issue → Branch → Preview Env → 测试闭环 固化到技能与脚本中的交付方案。 - 核心目标是提升交付速度,同时避免“每个分支都全量起服务”的资源浪费。 + 我们不是“会修 bug 的脚本”,而是一个面向真实研发组织的 DevOps 交付平台: + Issue → Branch → Preview Slot → 提测闭环,并且始终保留工程师对最终合并的控制权。
-核心价值
-1. 分支隔离提测
-每个 issue 绑定分支与预览槽位,主干环境保持稳定,避免相互覆盖。
+分支隔离,主干稳定
+每个 issue 分配独立分支和预览槽位,不再发生“提测相互覆盖”,主干环境用于稳定回归。
2. 资源按需分配
-根据变更范围判断 client_only/server_only/full_stack,不变更服务端就不重启服务端。
资源智能节流
+根据代码变更范围自动判定部署策略。仅前端改动时不重启服务端,直接复用共享后端。
3. 可审计闭环
-每次提测都可回溯到 commit、测试结果、环境 URL、验证步骤,且合并始终由工程师人工确认。
+证据驱动闭环
+自动沉淀 commit、测试结果、环境链接、验证步骤。Issue 可关闭、可回溯、可审计。
+这是一套用于长期演进的研发基础设施,不是临时脚本集合。
+ + +工作流拓扑
+输入 repo_url、api_key、mode,完成连通性校验。
拉取 issue 与图片附件,做质量评分与去重分组。
严格在 issue 指定分支改动,保留变更可追踪性。
change_scope 自动判断 skip/client/server/full_stack。
槽位 TTL + 关闭释放,减少预览环境资源占用。
-
+
- 工作流模板:
.gitea/workflows/issue-branch-preview.yml
+ - 回收模板:
.gitea/workflows/preview-slot-reclaim.yml
+ - 合并策略:所有模式下都要求工程师人工确认最终合并 +
一键安装(Windows / macOS / Linux)
+以下命令会把技能安装到本机 ~/.codex/skills/gitea-issue-devops-agent。
Linux
+curl -fsSL https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/install/install.sh | bash+ +
macOS
+curl -fsSL https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/install/install.sh | bash+ +
Windows (PowerShell)
+powershell -NoProfile -ExecutionPolicy Bypass -Command "iwr -useb https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/install/install.ps1 | iex"+
安装指南
-1) 获取技能仓库
-git clone https://fun-md.com/Fun_MD/devops-skills.git
-cd devops-skills
- 2) 安装到 Codex skills
-# Linux / macOS
-mkdir -p ~/.codex/skills
-cp -r skills/gitea-issue-devops-agent ~/.codex/skills/
-
-# Windows PowerShell
-New-Item -ItemType Directory -Force $HOME\.codex\skills | Out-Null
-Copy-Item .\skills\gitea-issue-devops-agent $HOME\.codex\skills\gitea-issue-devops-agent -Recurse -Force
- 3) 首次引导参数
--
-
repo_url(仓库地址)
- api_key(具备 issue 读写权限)
- mode:automatic/semi-automatic/manual
- - 可选:
reviewers、test_entry、deploy_env、health_endpoint、min_quality_score
-
核心工具
+issue_audit.py
+抓取 issue、评论和图片附件,完成质量评分、去重与回归候选识别。
+python skills/gitea-issue-devops-agent/scripts/issue_audit.py --base-url https://fun-md.com --repo FunMD/document-collab --token <TOKEN> --state all --download-attachments --output-dir .tmp/issue-audit+
change_scope.py
+输出部署范围建议,决定是否需要服务端重启。
+python skills/gitea-issue-devops-agent/scripts/change_scope.py --repo-path . --base-ref origin/main --head-ref HEAD+
preview_slot_allocator.py
+管理 preview 槽位:分配、复用、释放、TTL 回收。
+python skills/gitea-issue-devops-agent/scripts/preview_slot_allocator.py --state-file .tmp/preview-slots.json --slots preview-a,preview-b --repo FunMD/document-collab --issue 48 --branch dev --ttl-hours 24 --url-template https://{slot}.qa.example.com --evict-oldest
+ 工具使用说明
-issue_audit.py(拉取 issue + 图片证据)
-python skills/gitea-issue-devops-agent/scripts/issue_audit.py \
- --base-url https://fun-md.com \
- --repo FunMD/document-collab \
- --token <GITEA_TOKEN> \
- --state all \
- --download-attachments \
- --output-dir .tmp/issue-audit
-
- change_scope.py(按改动范围决策部署)
-python skills/gitea-issue-devops-agent/scripts/change_scope.py \
- --repo-path . \
- --base-ref origin/main \
- --head-ref HEAD
-
- preview_slot_allocator.py(分配 / 复用 / 释放槽位)
-python skills/gitea-issue-devops-agent/scripts/preview_slot_allocator.py \
- --state-file .tmp/preview-slots.json \
- --slots preview-a,preview-b \
- --repo FunMD/document-collab \
- --issue 48 \
- --branch dev \
- --ttl-hours 24 \
- --url-template https://{slot}.qa.example.com \
- --evict-oldest
- .gitea/workflows 接入
-
- 本仓库已包含示例工作流:.gitea/workflows/issue-branch-preview.yml 与
- .gitea/workflows/preview-slot-reclaim.yml,用于完成以下自动化链路:
-
-
-
- push 到 issue 分支后:自动分配槽位 + 变更范围识别 + 选择性部署 -
- issue 关闭 / 定时任务:自动释放或回收过期槽位 -
建议先在测试仓库验证工作流变量后再推广到生产仓库。
-