(将其写为问题和答案,因为我在调试此问题时在 Google 上找不到任何有用的信息,并希望为下一个人解决“零谷歌点击”问题。)
我正在为一位客户工作,他使用 Terraform 和 Concourse 来管理 Github 团队成员资格(以及存储库访问等)。
我们开始看到奇怪的错误(同时还有一些其他更改,这使得调试更加尴尬),这些错误在输出中显示为:
Error: PUT https://api.github.com/organizations/000000/team/000000/memberships/XXXXXX: 422 Validation Failed [{Resource:TeamMember Field:user Code:invalid Message:Inviter has insufficient permissions}]
其中
000000
表示组织和团队 ID,XXXXXX
表示用户的用户名;请参阅 Octokit 文档中的添加或更新用户的团队成员资格。 (文档指出,我们使用的数字 team_id
是可以接受的,而不是字母数字 team_slug
。)
我认为这实际上是一个 JSON 响应:
{
"Resource": "TeamMember",
"Field": "user",
"Code": "invalid",
"Message": "Inviter has insufficient permissions"
}
在所有情况下,机器人用户及其 Concourse 用于进行这些 API 调用的个人访问令牌,绝对有权将用户添加到相关团队(并且已在同一运行中成功添加其他用户)。但我找不到任何关于“邀请者权限不足”实际含义的有用信息。
在查看了用户是谁并与他们工作的团队核实后,这些用户已经离开了项目并被从组织中删除,但我们在他们的离职过程中被忽视了。
大概所讨论的“权限不足”是将它们重新添加到 Github 组织(我们不想这样做)。
解决这个问题的方法有2种:
后者正是我们所需要的,并且使我们的管道再次变绿。