我目前有一个机器人可以自动执行一些GitHub操作,例如合并拉取请求,在打开PR时通知Slack的员工,这种事情(它是一个自定义风格的Hubot实例)
当工作人员给他合并拉取请求的命令时,他首先检查他们是否属于对该存储库具有写入权限的团队。它有效,但代码不是很好。
首先,他获得组织中的所有团队,循环访问它们,将所有用户分配给该团队,如果他发现用户发出了合并命令,则他会检查该团队是否具有写入权限。如果不是,则认证很好。
这是最好的方法吗?我觉得它可以简单得多。
答案 0 :(得分:5)
更新:现在有一个GitHub API端点:
https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level
老回答:目前还没有一种更简单的方法(但我同意,如果有更优雅的方式来获取这些信息,那将会很棒)。您可以通过提取the user's teams和the list of teams which have access to the repository(而不是组织中的所有团队)来减少请求数量。我认为,这两个列表的交集可以让你回答这个问题。
(另外,在您的解决方案中,请注意您不仅要检查用户是推送访问团队的成员还是还需要检查此推送访问团队has access to the repository in question。用户可能是推送访问团队的成员,该团队无法访问相关存储库,也可以访问有权访问存储库的拉取访问团队成员。)