openEuler社区SIG组成员管理方案

georgecao2022-04-26openEulerSIG组成员管理

openEuler社区SIG组成员管理方案

社区SIG成员角色划分

通过和多个sig组讨论,并报TC确认,openEuler社区SIG组成员角色做如下划分:

角色定位
Maintainer定位是SIG组的牵引者、规划者,努力做好SIG组的发展和演进;
负责定期组织SIG组会议、并代表SIG组向社区展示SIG组情况;
Maintainer 是按sig组指定的,权限覆盖sig的所有代码仓,所有增加到sig的代码仓都默认获得权限;
CommitterSIG组部分仓库的看护者;作为这部分仓库的第一责任人;
Committer也是SIG组Maintainer的后备力量;
Committer 配置需要在sig-info.yaml中指定仓库的,权限覆盖yaml中明确的部分代码仓,权限默认不会扩展;
ContributorSIG组部分仓库的重要贡献者,也是这部分仓库Committer的后备力量;通常也是这部分代码仓库问题主要修复者和代码开发者;
Developer社区最广泛的代码贡献者;在社区长期贡献可自荐或被推荐为仓库Contributor,甚至Committer;
RepoAdmin社区部分自研代码仓库需要git push权限,会对这些仓库设置Admin权限;
通常是SIG组maintainer兼任,对这部分仓库的代码合入全量负责;

SIG组成员权责划分

根据不同角色,在社区(特别是在gitee代码托管平台)承担不同的权责:

SIG成员角色sig_info.yaml中是否记录代码提交通过评论approve合入直接git push合入wiki编辑权限
Maintainer✔️✔️✔️[sig组所有仓库]✔️
Committer✔️✔️✔️ [指定仓库]✔️ [指定仓库]
Contributor✔️✔️
Developer✔️
Repo_Admin✔️✔️✔️ [指定仓库]✔️[指定仓库]✔️ [指定仓库]

成员管理方案

  1. 每个SIG组新增sig_info.yaml文件作为社区成员管理载体;

  2. 只有当前SIG目录下OWNER文件被删除后,sig_info.yaml信息才会生效;OWNER文件存在时继续保持原成员关系和权限管控功能;

  3. sig_info.yaml中需要有全局的Maintainer,对sig组所有仓库都有合入权限(继承原Maintainer逻辑);——必选项

  4. 可以在部分仓库下添加这些仓库特有的Committer,仅有这一部分仓库的合入权限;——可选项

  5. 部分仓库下可新增Contributor字段,无代码合入权限;作为仓库的主要贡献者列出;——可选项

  6. 部分仓库下新增Admin字段, 对这部分仓库具有管理员权限,可通过git push合入代码;——可选项;

  7. 为缓解各sig组提交sig_info.yaml的困难,门禁组会按照当前OWNER文件信息和仓库信息,自动为 sig组创建sig_info.yaml

如何编写sig_info.yaml文件

手动编写sig-info.yaml 文件

sig-info.yaml 文件为yaml格式承载,包含如下基本元素:

字段类型说明
name字符串SIG组名称 ,必填
description字符串SIG组描述信息,必填
created_on字符串SIG组创建时间,选填
mailing_list字符串SIG组讨论邮件列表地址,选填
meeting_url字符串SIG例会纪要URL,选填
mentors列表SIG组当前导师名单,选填
maintainers列表SIG组所有maintainer名单
repositories列表SIG组所管辖的码云仓库信息

其中 mentors 列表中每一条记录代表一位 mentor 的个人信息,maintainers 列表中每一条记录代表一位 maintainer 的个人信息。每一条个人信息记录包含如下元素:

字段类型说明
gitee_id字符串gitee ID, 必填
name字符串姓名(或者网名), 必填
organization字符串所在组织或单位, 选填
email字符串个人邮箱地址, 选填

其中 repositories 字段为列表,其中每一个列表元素为SIG所管理的一组仓库信息,包括以下四个字段:

字段类型说明
repo列表该SIG管理的一组仓库名称组成的数组,必填
committers列表这一组仓库共同的committer成员们,选填
contributors列表这一组仓库共同的contributors成员们,选填
repo_admin列表这一组仓库共同的repo admin成员们,选填

以上信息中repo为仓库名称数组,其余committers/contributors/repo_admin都是成员数组,其中单个元素表示一条个人信息,同上文maintainer信息:

字段类型说明
gitee_id字符串gitee ID, 必填
name字符串姓名(或者网名), 必填
organization字符串所在组织或单位, 选填
email字符串个人邮箱地址, 选填

其中committers拥有对应repo组下所有仓库的代码审核权限,contributors是该repo组下所有仓库的主要贡献者。

sig-info.yaml 样例:

name: Infrastructure
description: This is a sample sig. Please copy it over and modify it accordingly.
created_on: '1970-01-01'
mailing_list: infra@openeuler.org
meeting_url: NA
mature_level: startup
mentors:
- gitee_id: batMan
  name: Wayne
  email: aaaaaaa@openeuler.org
maintainers:
- gitee_id: Joe
  name: JoeDou
  organization: RealT
  email: yyyyyyy@qq.com
- gitee_id: Jane
  name: JaneDou
  email: xxxxxxx@gmail.com
repositories:
- repo: 
  - openeuler/infrastructure
  - openeuler/website
  - openeuler/website-v2
  committers:
  - gitee_id: Bob
    name: BobMa
    email: zzzzzzz@yahoo.com
  contributors:
  - gitee_id: infra_superman
    name: Clark_Ken
    orgnization: Justice_L
    email: zzzzzzz@openeuler.org
- repo: 
  - openeuler/cve-manager
  - openeuler/tool-collections
  - openeuler/go-gitee
  - openeuler/gitbook-theme-hugo
  - cve-manager
  committers:
  - gitee_id: tommyliu
    name: Tommy
    email: zzzzzzzhh@163.com
  repo_admin:
  - gitee_id: lisa993
    name: LisaLi
    email: lililisa@qq.com

自动生成sig_info.yaml样板后手动补充

基础设施提供自动化脚本可以快速生成相关SIG组的配置管理文件sig_info.yaml。 其中maintainer信息的gitee_id来源与owner文件,repositories中仓库信息来源于sig目录下所有仓库配置信息。其余信息只是格式化模板,需要用户自行完善;

命令使用方法:

  • git clone https://gitee.com/openeuler/community.git 获取community仓库代码
  • cd community/sig/ 跳转到sig管理目录
  • python3 create_sig_info_template.py xxx 在对应SIG组文件夹内创建sig_info.yaml文件模板,其中 xxx 为SIG组名称,如Infrastructure,A-Tune等
  • 进入对应SIG组文件夹,修改sig_info.yaml模板中相关内容
  • 提交sig_info.yaml修改

【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。