机器人自助配置使用手册

本文档面向社区开发者,说明如何通过配置文件自助调整机器人在你的仓库中的行为,无需联系平台管理员。


目录

  1. 配置层级说明
  2. 仓库个性配置
  3. 组织配置
  4. 可配置项说明
  5. 生效范围与时间
  6. FAQ

1. 配置层级说明

机器人的行为由四层配置按优先级叠加决定:

层级 名称 配置文件位置 生效范围 维护人
1(最高优先级) 仓库个性配置 你的仓库的 .infra/robot.yaml 仅对本仓库生效,按 PR 目标分支隔离 仓库维护者
2 机器人服务仓库级默认配置 机器人服务内置 针对特定仓库的服务内置默认值 机器人服务管理员
3 组织配置 infrastructure 仓库 .infra/robot.yaml 对整个组织下未命中第 1、2 层的仓库生效 组织管理员
4(最低优先级) 机器人服务组织级默认配置 机器人服务内置 对组织下所有未命中以上三层的仓库生效 机器人服务管理员

优先级:仓库个性配置 > 机器人服务仓库级默认配置 > 组织配置 > 机器人服务组织级默认配置

  • 仓库个性配置文件存在时,该仓库的 PR 直接使用仓库个性配置,跳过第 2、3、4 层。
  • 仓库个性配置文件不存在,且机器人服务内置了该仓库的精确默认配置(第 2 层)时,跳过组织配置(第 3 层),直接使用机器人服务仓库级默认配置。
  • 以上均未命中时,依次回退到组织配置(第 3 层)、机器人服务组织级默认配置(第 4 层)。
  • 任意字段未在较高层级配置时,自动从下一层继承。

2. 仓库个性配置

2.1 配置文件位置

在你的仓库创建 .infra/robot.yaml 文件,所有可自定义的功能配置均写在这一个文件中。

2.2 按分支隔离

机器人在处理每个 PR 时,以该 PR 的目标分支为准读取配置文件。即:

  • 合入 main 分支的 PR → 读取 main 分支的 .infra/robot.yaml
  • 合入 release-1.0 分支的 PR → 读取 release-1.0 分支的 .infra/robot.yaml

你可以在不同分支分别维护不同的配置文件,分支之间互不影响。若某个分支上没有配置文件,该分支的 PR 将按优先级依次回退到机器人服务仓库级默认配置、组织配置、机器人服务组织级默认配置。

2.3 创建配置文件

  1. 切换到目标分支(如 main)。
  2. 在仓库创建 .infra/robot.yaml
  3. 第 4 节填写需要自定义的字段,只需填写想覆盖的字段,其余保持默认。
  4. 将文件提交到该分支。
  5. 等待缓存刷新后配置生效(默认 10 分钟,首次创建文件最长需等待 60 分钟)。

示例——只覆盖 lgtm 数量:

# .infra/robot.yaml
lgtm_need_nums: 2

3. 组织配置

组织配置由组织管理员统一维护,存放在组织内 infrastructure 仓库的 .infra/robot.yaml 文件中。

它的作用是为组织下所有仓库设置统一的默认值,仓库维护者无需重复配置。当某个仓库有自己的仓库个性配置时,该仓库会优先使用自己的配置,组织配置对该仓库不再生效。

格式与仓库个性配置完全相同(见第 4 节),组织管理员按需维护即可。


4. 可配置项说明

所有配置项写在同一个 .infra/robot.yaml 文件中,按需填写:

# PR 标签要求
lgtm_need_nums: 1       # 需要多少个 /lgtm
approve_need_nums: 1    # 需要多少个 /approve

# 合并方式:merge / squash / rebase
default_merge_method: merge

# PR 合入前必须存在的标签
require_labels:
  - label: lgtm
    operator: ""                      # 空:不限操作人;填写账号则只认可指定人添加的标签
  - label: approved
    operator: "operator1,operator2"

# PR 合入前必须不存在的标签(存在即阻断合入)
block_labels:
  - label: work-in-progress
  - label: needs-issue

lgtm_need_nums

控制 PR 合入需要多少个 /lgtm,默认值由社区管理员在机器人服务中配置。

approve_need_nums

控制 PR 合入需要多少个 /approve,默认值由社区管理员在机器人服务中配置。

default_merge_method

设置 PR 的合并方式:

含义
merge 保留所有提交历史
squash 将所有提交压缩为一个提交再合入
rebase 以变基方式合入,保持线性历史

require_labels

列出 PR 合入前必须存在的标签。每条规则包含:

  • label:标签名,精确匹配。
  • operator:指定哪些账号添加的该标签才被认可,逗号分隔多个账号,留空表示不限制操作人。

ℹ️说明: operator 只影响机器人判断标签是否"合规",不影响平台本身的标签操作权限。

block_labels

列出 PR 合入前必须不存在的标签。若 PR 上存在任意一个阻断标签,机器人将拒绝合入。

  • operator:留空表示任何人添加的该标签都会触发阻断;填写账号则只有指定人添加的该标签才触发阻断。

5. 生效范围与时间

生效范围

配置类型 生效范围
仓库个性配置 仅对本仓库、以该分支为目标分支的 PR 生效
组织配置 对整个组织下没有仓库个性配置的所有仓库生效

生效时间

场景 等待时间
修改已有配置文件 最长 10 分钟
首次创建配置文件(该分支原本没有配置文件) 最长 60 分钟

缓存到期后,机器人在处理下一个 PR 事件时会自动读取最新配置,无需额外操作。


6. FAQ

Q:修改配置后机器人没有变化?

A:请检查以下几点:

  1. 文件是否提交到了正确的分支(应与 PR 目标分支一致)。
  2. 文件路径是否为 .infra/robot.yaml
  3. YAML 格式是否有误(可使用在线 YAML 校验工具检查)。
  4. 是否还在缓存期内(修改后最长等 10 分钟,首次创建最长等 60 分钟)。

Q:没有配置文件的分支会受影响吗?

A:不会。目标分支没有 .infra/robot.yaml 时,该分支的 PR 不受仓库个性配置影响,自动回退到组织配置或机器人服务默认配置(仓库级或组织级)。


Q:operator 留空和不填有什么区别?

A:效果相同,都表示不限制操作人,任何有标签操作权限的人添加的标签都被认可。


Q:可以只配置部分字段吗?

A:可以。只需填写想覆盖的字段,未填写的字段自动继承组织配置或机器人服务默认值。例如只想修改合并方式:

default_merge_method: squash