我正在尝试将代码所有权添加到存储库中的项目文件中。
例如:只有特定组 (
developers
) 拥有项目 (/app/important_feature
) 中的特定组件,并且必须作为拉取请求审核者包含在内。
我阅读了一些文章并在
CODEOWNERS
文本文件中手动插入了文件映射。
在 Github 存储库中管理代码所有权的最佳实践是什么?
说明:Github 中有一个很棒的代码所有权功能,可以定义负责存储库中代码的个人和团队。
示例:
Devops/SRE 团队必须批准
.yml
mysql 和 mongodb 数据库中的配置代码更改。
后端团队负责人必须审查与项目中某些模块中的安全组件相关的敏感算法的更改。
支持工程师必须验证与特殊客户代码相关的代码。
来自文档:
具有管理员或所有者权限的人可以在以下位置设置 CODEOWNERS 文件: 一个存储库。
您选择作为代码所有者的人必须具有以下权限: 存储库。当代码所有者是一个团队时,该团队必须是 可见,并且必须具有写权限,即使所有个人 团队成员已经拥有直接写入权限,通过 组织成员资格,或通过其他团队成员资格。
当有人打开时,代码所有者会自动请求审核 修改他们拥有的代码的拉取请求。代码所有者不是 自动请求审查草稿拉取请求。了解更多 有关草稿拉取请求的信息,请参阅“关于拉取请求”。什么时候 您将草稿拉取请求标记为可供审核,代码所有者 自动通知。如果您将拉取请求转换为草稿, 已经订阅通知的人还没有 自动取消订阅。有关详细信息,请参阅“更改 拉取请求的阶段。”
当具有管理员或所有者权限的人启用时需要 审查,他们还可以选择要求代码所有者的批准 在作者可以合并存储库中的拉取请求之前。了解更多 信息,请参阅“关于受保护的分支。”
如果团队启用了代码审查分配,则该个人 批准不能满足代码所有者批准的要求 受保护的分支。有关详细信息,请参阅“管理代码审查 为您的团队分配的任务。”
解决方案:首先在存储库的root、docs/或.github/目录中创建一个
CODEOWNERS
。
cd <your-project-path>
touch CODEOWNERS
我们假设:
CoolOrgName
developers
/ backend
/ devops
其次,编辑
CODEOWNERS
文件并设置要在项目中应用的规则:
##########################################
# code ownership
##########################################
# default ownership: default owners for everything in the repo (Unless a later match takes precedence)
* @CoolOrgName/developers
# (Order is important, the last matching pattern takes the most precedence)
# When someone opens a pull request with .js files that only @backend team and not the global owner(s) will be requested for a review.
*.js @CoolOrgName/backend
# only @devops team can review and approve this change related to .yml configuration
app/config/*.yml @CoolOrgName/devops
# only our CTO can review the change in our secret encrypted token
app/config/secret-token.txt @cto
# alternatively we can use email as well:
app/config/another-secret-token.txt [email protected]
# any change inside the `/apps/sensetive-module/secured-component/` directory
# will require approval from "ninja" or "cto" users.
/apps/sensetive-module/secured-component/ @ninja @cto
每个存储库应该是一个文件 https://help.github.com/articles/about-codeowners/
@CoolOrgName/developers
@ 符号在这里是必须的。