SuperAPI AI 工具集

rhdh-pr-mr

部署与运维

查看项目

更新于 10-16 11:06

技能介绍

用途

该技能用于把已经准备好的主题分支推送到远端,并打开一个 GitHub Pull Request 或 GitLab Merge Request,主要服务于 CI 和代理自动化场景。它提供的是一个共享脚本,负责 push 与 open 两个动作。

主要能力

  • 推送主题分支并创建 PR / MR。
  • 支持 GitHub 与 GitLab 两种目标(通过环境与参数控制)。
  • 在满足条件时联动 Jira:当 --issue KEY 或 JIRA_ISSUE 已设置且存在 JIRA_API_TOKEN 时,在打开 PR/MR 后调用 /rhdh-jira-link(link-pr-mr.js link),Jira 评论为 PR: <url> 或 MR: <url>(以及可选的 Adjusted 字段)。
  • 标题处理:当 --title 缺少基分支后缀时自动追加 [<base>],包括 main 分支;若标题已经以基分支结尾则保持不变。
  • 输出:标准输出包含 url: …;如果 --head 对应的 PR/MR 已存在,退出码为 0。
  • 支持 --label 添加标签,支持 --dry-run 试运行。

使用方式

调用脚本时使用 SKILL 变量指向该技能目录,示例:

SKILL=<this skill's directory>
"$SKILL/scripts/create-pr-mr.sh" \
  --cwd /path/to/checkout \
  --base main \
  --head chore/my-topic \
  --title 'chore: short summary' \
  --body-file /tmp/body.md \
  [--issue RHIDP-12345] \
  [--label ok-to-test] \
  [--dry-run]

默认是 --no-open(不打开浏览器)。只有交互式代理运行时才传 --open。GITLAB_PIPELINE=true 会强制不打开浏览器。

代理场景:按 /mutation-gate 处理 push + open(如涉及 issue 还需 link)。通过名称调用 /rhdh-pr-mr(或已在技能克隆中时直接运行脚本路径)。当对话中已有 Jira key 时传入 --issue。最后报告 url: 那一行。

若同级的 Jira link 技能不在当前 pack 检出中的相邻位置,可用 RHDH_JIRA_LINK_SCRIPTS 覆盖 link 脚本目录。

Jira 关联行为

  • --issue KEY 或已设置 JIRA_ISSUE,且有 JIRA_API_TOKEN:打开后调用 /rhdh-jira-link(link-pr-mr.js link)。
  • 设置了 issue 但没有 token,或缺少 link 脚本:给出警告,但 PR/MR 仍然成功。
  • 没有 issue:输出 [INFO] no Jira issue; skip link。

边界

  • 不负责 /rhdh-pr-create 的工作(插件变更集、录制、monorepo 发布)。
  • 当未设置 --issue 或 JIRA_ISSUE 时跳过 Jira 关联,绝不虚构 issue key。
  • midstream 的 createPR.sh(distgit)在后续迁移前仍由 updateBaseImages.sh 使用。

测试

bash -n "$SKILL/scripts/create-pr-mr.sh"
shellcheck --severity=warning "$SKILL/scripts/create-pr-mr.sh"
"$SKILL/scripts/create-pr-mr.sh" --help
"$SKILL/tests/smoke.sh"

完成标准

主题分支已推送、打印出 PR 或 MR URL,并且要么更新了 Jira Web 链接,要么因缺少 issue 而明确跳过关联时,视为完成。