返回顶部
g

gitlab-workflow

GitLab 工作流助手,严格遵循团队规范。用于 MR 管理、代码审查、CI/CD 状态查询、分支管理和合并操作。通过 MorphixAI 代理安全访问 GitLab API。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.1
安全检测
已通过
356
下载量
0
收藏
概述
安装方式
版本历史

gitlab-workflow

# GitLab 工作流 通过 `mx_gitlab` 工具管理 GitLab 项目。严格遵守团队规范。 ## 前置条件 1. **安装插件**: `openclaw plugins install openclaw-morphixai` 2. **获取 API Key**: 访问 [morphix.app/api-keys](https://morphix.app/api-keys) 生成 `mk_xxxxxx` 密钥 3. **配置环境变量**: `export MORPHIXAI_API_KEY="mk_your_key_here"` 4. **链接账号**: 访问 [morphix.app/connections](https://morphix.app/connections) 链接 GitLab 账号,或通过 `mx_link` 工具链接(app: `gitlab`) --- ## 参数命名规范(重要) `mx_gitlab` 工具所有 action 的参数命名: | 参数 | 说明 | |------|------| | `project` | 项目 ID(数字字符串)或路径(`group/repo`),**不是** `project_id` | | `mr_iid` | MR 在项目内的序号,**不是** `merge_request_iid` | | `pipeline_id` | Pipeline 的全局 ID | ### description 字段换行格式 > ⚠️ `description` 字段**必须使用真实换行符**,不要使用 `\n` 字面量字符串。 > > 错误示例(在 GitLab 上会显示为 `\n`): > ``` > description: "改动\n- 修复 bug\n- 新增功能" > ``` > > 正确示例(使用 YAML 多行字符串): > ```yaml > description: | > ## 改动 > - 修复 bug > - 新增功能 > > ## 测试 > - 单元测试通过 > ``` --- ## 代码审查策略(优先级顺序) **获取 MR 代码变更时,按以下顺序尝试:** ### ✅ 优先:本地 git(推荐) 本地仓库 + git 命令是最可靠的代码审查方式: - 无需额外认证(使用本地已有凭证) - 无响应体大小限制(任意规模的 diff) - 速度快,工具丰富(log、diff、show、blame) **第一步:查找本地仓库路径** ```bash # nodes.run — 在本机执行 find ~/www -maxdepth 4 -type d -name '<仓库名>' # 例:find ~/www -maxdepth 4 -type d -name 'tanka-2b-web' ``` **第二步:fetch 最新数据** ```bash # nodes.run — 工作目录切换到仓库路径 cd ~/www/<项目路径> && git fetch origin ``` **第三步:获取 MR 的 commits(需要知道源分支和目标分支)** ```bash # 查看 MR 分支间的 commit 列表 git log origin/<target-branch>..origin/<source-branch> --oneline # 示例(MR: feat/zoom-v2/main → uat-tanka-oh) git log origin/uat-tanka-oh..origin/feat/zoom-v2/main --oneline ``` **第四步:获取文件变更统计** ```bash git diff --stat origin/<target-branch>...origin/<source-branch> # 示例 git diff --stat origin/uat-tanka-oh...origin/feat/zoom-v2/main ``` **第五步:获取具体文件的 diff** ```bash # 全量 diff(大 MR 慎用,建议指定文件) git diff origin/<target-branch>...origin/<source-branch> # 指定文件 diff(推荐) git diff origin/<target-branch>...origin/<source-branch> -- src/path/to/file.ts # 只看特定目录 git diff origin/<target-branch>...origin/<source-branch> -- src/components/ ``` --- ### ⚠️ 备用:mx_link proxy(本地无仓库时使用) 当本地不存在仓库时,通过 MorphixAI 代理调用 GitLab API。 **注意:大型 MR 的 diff 可能因响应体过大返回 400,此时只能使用本地 git。** ``` mx_link: action: proxy account_id: <gitlab-account-id> method: GET url: https://gitlab.com/api/v4/projects/<project-id>/merge_requests/<mr-iid>/changes ``` 可用的 MR 相关 API: - `GET /api/v4/projects/{id}/merge_requests/{iid}` — MR 详情 - `GET /api/v4/projects/{id}/merge_requests/{iid}/changes` — 文件变更(可能因大小失败) - `GET /api/v4/projects/{id}/merge_requests/{iid}/discussions` — Discussion 线程 - `GET /api/v4/projects/{id}/merge_requests/{iid}/notes` — 评论列表 - `POST /api/v4/projects/{id}/merge_requests/{iid}/notes` — 发表评论 - `GET /api/v4/projects/{id}/merge_requests/{iid}/approvals` — 审批状态 --- ## 分支命名 - `feature/JIRA-{ID}-{简短描述}` — 新功能 - `fix/JIRA-{ID}-{简短描述}` — bug 修复 - `release/v{X.Y.Z}` — 发布分支 - `hotfix/v{X.Y.Z}-{描述}` — 生产热修复 ## Commit Message 格式 `{Scope}: {action} {description}` - Scope:模块名(SDK、CLI、Gateway、Bot 等) - Actions:add / update / fix / remove / refactor - 示例:`SDK: add message retry logic` - 相关改动一个 commit,绝不混杂无关重构 --- ## 核心操作(mx_gitlab) ### 查看当前用户 ``` mx_gitlab: action: get_user ``` ### 列出项目 ``` mx_gitlab: action: list_projects per_page: 10 ``` ### 查看项目详情 ``` mx_gitlab: action: get_project project: "12345" ``` ### MR 操作 **列出 MR:** ``` mx_gitlab: action: list_merge_requests project: "12345" state: "opened" ``` **创建 MR:** ``` mx_gitlab: action: create_merge_request project: "12345" source_branch: "feature/JIRA-123-user-login" target_branch: "main" title: "[JIRA-123] 实现用户登录功能" description: "## 改动\n- 实现 JWT 登录\n\n## 测试\n- 单元测试通过\n\n## 关联\n- JIRA-123" ``` **审批 MR:** ``` mx_gitlab: action: approve_merge_request project: "12345" mr_iid: 42 ``` **查看单条 MR 详情(含合并就绪状态):** ``` mx_gitlab: action: get_merge_request project: "12345" mr_iid: 42 ``` 返回关键字段: - `detailed_merge_status`: `mergeable`(可合并)/ `preparing`(准备中,需等待)/ `checking`(检查中)/ `ci_must_pass`(CI 未通过)/ `not_approved`(未获批准)/ `discussions_not_resolved`(有未解决讨论) - `has_conflicts`: 是否有冲突 - `blocking_discussions_resolved`: 阻塞性讨论是否已解决 - `pipeline`: 最新 Pipeline 状态 **合并前必须先检查状态(重要):** > ⚠️ 直接调用 `merge_merge_request` 而不检查状态会导致 500 错误(MR 未就绪时 GitLab 拒绝合并) ``` # 正确流程: 1. mx_gitlab: get_merge_request → 确认 detailed_merge_status === "mergeable" 2. 如果是 "preparing" 或 "checking" → 等待后重试 get_merge_request 3. 如果是 "ci_must_pass" → CI 未通过,不能合并 4. 如果是 "not_approved" → 需要审批,先 approve_merge_request 5. 确认 mergeable 后 → mx_gitlab: merge_merge_request ``` **合并 MR:** ``` mx_gitlab: action: merge_merge_request project: "12345" mr_iid: 42 ``` > ✅ `merge_merge_request` 会自动检查 `detailed_merge_status`,若 MR 未就绪会直接返回错误和原因,无需手动 pre-check。 **更新 MR(设置 Reviewer / Assignee / 标签等):** ``` # 先搜索 GitLab 用户 ID mx_gitlab: action: search_users search: "username_or_name" # 再设置 reviewer(使用搜索结果中的 id 字段) mx_gitlab: action: update_merge_request project: "12345" mr_iid: 42 reviewer_ids: [12345] ``` ### CI/CD 操作 **查看 Pipeline:** ``` mx_gitlab: action: list_pipelines project: "12345" per_page: 5 ``` **重试失败的 Pipeline:** ``` mx_gitlab: action: retry_pipeline project: "12345" pipeline_id: 67890 ``` ### Issue 操作 **列出 Issue:** ``` mx_gitlab: action: list_issues project: "12345" state: "opened" ``` **创建 Issue:** ``` mx_gitlab: action: create_issue project: "12345" title: "Bug: 登录页面白屏" description: "## 问题\n在 Safari 下登录页面白屏\n\n## 复现\n1. 打开 Safari\n2. 访问 /login" labels: ["bug", "frontend"] ``` ### 分支操作 **列出分支:** ``` mx_gitlab: action: list_branches project: "12345" search: "feature/" ``` --- ## MR 创建规范 标题:`[JIRA-{ID}] {描述}` 描述必须包含: 1. 改了什么,为什么改 2. 如何测试 3. 关联的 Jira Issue 链接 至少指定 1 个 Reviewer。单个 MR 最多 500 行变更。 ## Code Review 检查清单 Review MR 时,按顺序检查所有项目: 1. 分支命名符合规范 2. Commit message 清晰且有 scope 3. 代码符合团队风格指南 4. 有对应的测试用例 5. CI pipeline 全绿 6. 无未解决的 Discussion 7. 无硬编码的 secret 或 token 8. 破坏性变更有文档说明 所有项通过才能 approve。评论具体问题时引用行号。 --- ## 常见工作流 ### 审查指定 MR(完整流程) ``` 1. mx_gitlab: list_merge_requests, project: "<id>", state: "opened" → 获取 MR 信息(source_branch, target_branch, mr_iid) 2. nodes.run: find ~/www -maxdepth 4 -type d -name '<repo>' → 查找本地仓库路径 3. nodes.run: cd <repo-path> && git fetch origin → 更新远端分支数据 4. nodes.run: git log origin/<target>..origin/<source> --oneline → 查看 commit 列表 5. nodes.run: git diff --stat origin/<target>...origin/<source> → 查看文件变更统计 6. nodes.run: git diff origin/<target>...origin/<source> -- <关键文件> → 深入审查关键文件的 diff 7. mx_gitlab: list_pipelines, project: "<id>" → 确认 CI 状态 8. mx_gitlab: approve_merge_request, project: "<id>", mr_iid: <iid>(审查通过后) ``` ### 查看我的待处理 MR ``` 1. mx_gitlab: get_user → 获取用户名 2. mx_gitlab: list_merge_requests, project: "<id>", state: "opened" → 列出 open 状态的 MR 3. mx_gitlab: list_pipelines, project: "<id>" → 检查 CI 状态 ``` ### 创建并合并 Feature MR ``` 1. mx_gitlab: create_merge_request project: "<id>", source_branch: "feature/xxx", target_branch: "main" title: "[JIRA-xxx] desc" 2. mx_gitlab: get_merge_request, project: "<id>", mr_iid: <iid> → 等待 detailed_merge_status 变为 "mergeable" (刚创建后状态为 "preparing",需要等待 GitLab 完成检查) 3. mx_gitlab: list_pipelines, project: "<id>" → 确认 CI 通过 4. mx_gitlab: merge_merge_request, project: "<id>", mr_iid: <iid> → 合并 ``` ### CI 失败处理 ``` 1. mx_gitlab: list_pipelines, project: "<id>", status: "failed" 2. mx_gitlab: retry_pipeline, project: "<id>", pipeline_id: <id> ``` ### 设置 MR Reviewer(完整流程) ``` 1. mx_gitlab: search_users, search: "reviewer_name" → 从结果中找到目标用户的 id(数字) 2. mx_gitlab: update_merge_request project: "<id>", mr_iid: <iid>, reviewer_ids: [<user_id>] ``` ### Pipeline 监控(等待 Pipeline 完成) > ⚠️ 心跳(HEARTBEAT)默认间隔 30m,Anthropic setup-token 下为 1h,不适合实时监控。 > > 推荐做法:将监控任务写入 `HEARTBEAT.md`,心跳触发时自动检查: > ```md > ## 待监控 > - Pipeline #10164 (project: tanka-electron):等待完成,完成后通知用户 > ``` > > 或用户要求"立即检查"时,直接调用: > ``` > mx_gitlab: list_pipelines, project: "<id>", per_page: 5 > ``` > 对比 pipeline id 和状态,判断是否完成。 --- ## 注意事项 - `project` 参数:数字 ID(如 `"12345"`)或路径(如 `"my-group/my-project"`),通过 `list_projects` 或 `get_project` 获取 - `mr_iid` 是 MR 在项目内的序号(非全局 ID),从 `list_merge_requests` 或 `create_merge_request` 返回结果中获取 - `account_id` 参数通常省略,工具自动检测已链接的 GitLab 账号 - `mx_link proxy` 获取 MR diff 可能因响应体过大返回 400,优先使用本地 git

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 gitlab-workflow-1776208178 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 gitlab-workflow-1776208178 技能

通过命令行安装

skillhub install gitlab-workflow-1776208178

下载 Zip 包

⬇ 下载 gitlab-workflow v0.1.1

文件大小: 5.18 KB | 发布时间: 2026-4-15 10:41

v0.1.1 最新 2026-4-15 10:41
- 新增前置条件说明:明确要求安装 `openclaw-morphixai` 插件、获取并配置 MorphixAI API Key,以及链接 GitLab 账号。
- 前置条件从“配置环境变量和账号”扩展为分步详细引导,包括插件安装和访问链接。
- 其余内容与上一版一致,未见功能或行为方面的变更。

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部