-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] 为 RTT 建立 maintainer 机制 #9903
Comments
我会先提交一个 rfc 的 pr,建个 maintainer的文件,再加一个脚本,可以根据 patch 涉及修改的文件找到对应的 maintainer。 |
[GITHUB] PR代码reviewer分发机制 |
目前BSP大小:2.3G
BSP下面的大小:
|
谢谢,我原来说有 6.5G 是不对的(算错了),我已经更正了 issue 原文的描述。 |
感觉这个已经有 maintainer 的雏形了,@SuperThomas 对我提的这个 issue 有没有什么进一步的建议和想法? |
可以把codeownner完善一下,感觉能达到需求,这个唯一不太好的地方就是里面的必须是有rtthread. reviewer权限的人才行,(不过reviewer也只能加这些人)。想法挺好的,可以一起维护codeownner即可。其他的人员可以通过assign即可 |
@supperthomas 有几个问题:
是否需要另外新建一个 Maintainer 文件来保存 maintainer 和其负责的文件的 mapping 关系。CODEOWNERS 似乎也已经包含的这部分信息,本来我想象中的 Maintainer 文件除了 CODEOWNERS 中的信息,还会记录一些其他的信息,譬如 maintainer 的名字,联系邮箱地址等,一个例子就是类似 linux 下的 https://github.com/torvalds/linux/blob/master/MAINTAINERS。不过如果够用的话,我也不介意就直接使用 CODEOWNERS 。
是否可以认为以后注册了 maintainer 的人我们都可以给他 rtthread.reviewer 的权限,这样就能自动被列出在 pr 的 reviewer list 上呢?
你的意思是不是说:如果上面这个想法做不到的话,我这里可以提供一个脚本,根据另一个 Maintainer 文件信息(包含了maintainer 和其负责的文件的 mapping 关系),再加上 pr 中实际修改的文件列出 maintainter 的 github id,这样有rtthread.reviewer 权限的人(譬如您或者 @Rbb666 等)就可以通过手动 assign 的方式把这个 pr 指派给他?我比较不确定的是这种手动指派的人是否也是需要有什么权限?我的意思是说例如 pr 中下图中是可以根据 “任意的合法” github id 指派吗?我这里好像不行,不过也许是我的权限不够高。 |
reviewer只有对仓库有权限的用户才行。assigned可以任意用户。其他的你看,还需要什么,可以加功能。我意思是之前codeowner有的功能就可以省一些工作量 |
这份PR初步实现了提交PR后,CI机器人帮助@负责模块的用户协助review,不依赖是否有仓库权限: #9913 |
后续需要尽可能把一些BSP的文件移除去,保持有限的几个bsp才行。 @Rbb666 可以首先基于stm32来做个样本,先把stm32的移除,至少得让stm32 hal库都放外面才是,太大了。 |
经过社区讨论后,打算复用 #9913 实现本 issue。具体的方案如下: 不采用 label 方式记录 maintainer 信息,而是在 RT-Thread 主仓下新建一个 {
"tag": "stm32l496-st-nucleo",
"path": "bsp/stm32/stm32l496-st-nucleo",
"owner": "Li Tao (supperthomas) <[email protected]>, Zhang Bingru (Rbb) <[email protected]>"
},
{
"tag": "stm32",
"path": "bsp/stm32",
"owner": "Li Tao (supperthomas) <[email protected]>, Zhang Bingru (Rbb) <[email protected]"
},
{
"tag": "kernel: memory",
"path": "kernel",
"owner": "Li Tao (supperthomas) <[email protected]>, Zhang Bingru (Rbb) <[email protected]"
},
......
CI 自动识别 PR 中改动涉及的文件,然后根据 comment 的格式如下:
|
我对以上方案有几个问题,欢迎讨论和补充:
|
|
@kurisaW 没看明白你的描述 :(,要不直接举几个例子吧:
基本上涉及的 reviewer,我觉得只增不减的样子。 |
@unicornx 我测试了一下实际效果,但是发现了一些问题。 首先明确CI机制,PR的commit修改的文件具备tag属性;同时一个人同时可能会看护多个TAG属性。 因此我对你上面的例子再做出一些扩展说明: case 1:第一次提交,新建 pr 后涉及到 TAG1(kernel)的修改 ,对应 maintainer A 和 maintainer B,CI 机器人新增一条评论提及 A 和 B。修改后再次 commit,此时涉及到 TAG2(libcpu)的修改,而 TAG2 对应 maintainer A,maintainer B 和 maintainer C。对于 maintainer A/B/C 来说,这里的文件维护职责归属于他们三个,所以应该再次新增一条评论(提及A、B、C三人),这里虽然说前面因为 TAG1, A和B已经被提到了一次,但是这两次修改所对应的看护职责不同(第一次为 TAG1,第二次为 TAG2),是否应该为此容许评论两次的存在?
# 第一次commit
---------------------------------
@maintainer A @maintainer B
Tag: kernel
Please take a review of this tag
---------------------------------
# 第二次commit
---------------------------------
@maintainer A @maintainer B @maintainer C
Tag: libcpu
Please take a review of this tag
---------------------------------
# 第一次commit
---------------------------------
@maintainer A @maintainer B
Tag: kernel
Please take a review of this tag
---------------------------------
# 第二次commit
---------------------------------
@maintainer C
Tag: libcpu
Please take a review of this tag
--------------------------------- 这两种情况您会更倾向哪一种(我本人觉得第一种职责还是更能明确),或者有更好的想法? |
目前存在几个比较麻烦的事情:
所以我的建议是如果我们在每次触发 ci 检查时,无论这个 pr 中有多少个 commit,我们都能得到这个 pr 修改的全集。 这样我们就可以确保 ci 产生的 最新一条评论 中覆盖了这个pr 所涉及的所有 模块,也就覆盖了所有的 maintainer。 |
我这里提交了一份最新的PR:#9913 该CI自动化脚本可自动识别PR修改的文件列表,并根据仓库根目录下的MAINTAINERS文件,映射审核团所维护的path,从而分配审查 MAINTAINERS文件可参考: 下面是该脚本的具体功能说明:
下面是一个演示效果,也可以通过下方链接查看实际效果: 需要注意的是,运行这个脚本需要熊大帮忙添加一个token,要求具备下面这几个权限:
|
Describe problem solved by the proposed feature
参考其他开源项目,建立maintainer负责机制:
好处:
Describe your preferred solution
建个maintainer的文件,再加一个脚本,可以根据 patch 涉及修改的文件找到对应的 maintainer。
剩下的就需要社区一起来推动了,愿意贡献的人可以主动报名承担 maintainer 的角色。
基于 maintainer 的信息,可以后继展开以下工作:
Describe possible alternatives
No response
The text was updated successfully, but these errors were encountered: