AWS CodePipeline 无法访问组织的存储库

Posted

技术标签:

【中文标题】AWS CodePipeline 无法访问组织的存储库【英文标题】:AWS CodePipeline not able to access Organization's repositories 【发布时间】:2015-11-30 13:40:32 【问题描述】:

我正在尝试在 AWS Codepipeline 中设置持续部署管道。

在创建管道时,我提供“源提供商”作为 GitHub,然后连接到 GitHub。 我可以在创建管道页面的“存储库”下拉列表中看到我的公共存储库。但我无法在此下拉列表中看到我组织的私有存储库。 我在组织中有写入权限。

如何让 AWS Codepipeline 有权访问我的组织存储库。

【问题讨论】:

【参考方案1】:

AWS CodePipeline 的操作需要两个GitHub scopes,如Product and Service Integrations with AWS CodePipeline: Source Action Integrations 中的GitHub 部分所述:

[...] 您可以连接到 通过创建新管道或编辑 GitHub 存储库 现有的。 第一次将 GitHub 存储库添加到 管道,您将被要求授权 AWS CodePipeline 访问 为了与 GitHub 集成,AWS CodePipeline 使用 OAuth 令牌,需要两个 GitHub 范围:admin:repo_hook,即 用于检测您何时提交更改并将更改推送到 存储库和repo,用于从 公共和私有存储库到管道中。了解更多信息 关于 GitHub 范围,请参阅GitHub Developer API Reference。访问 为 AWS CodePipeline 配置的所有存储库 GitHub账号有访问权限;它目前无法配置为 单独的存储库。[强调我的]

现在,虽然您可能已经这样做了,但您的组织可能已设置为默认不授予访问权限(虽然在授权新应用/服务时这是可见且可调整的,但很容易被忽略) - 这是相应的。 GitHub 工具提示:

在所有者授予访问权限之前,应用程序无法访问组织的私有数据或修改其公共数据。

如果您是该组织的所有者,您可以通过执行引用的 CodePipeline GitHub 文档中概述的相反说明来明确授予访问权限:

您可以从 GitHub 撤消此访问权限,方法是选择设置,选择 应用程序,然后在授权应用程序下找到 AWS CodePipeline 在授权应用程序列表中并选择 撤销。 [...]

也就是说,转到您的 GitHub 配置文件 => 设置 => 应用程序 => AWS CodePipeline,然后单击每个适用组织的 Grant access 按钮。

【讨论】:

嗨 Steffen,我不是这个组织的所有者,但我仍然可以在 AWS Codepipeline 权限页面(GitHub 配置文件 => 设置 => 应用程序 => AWS CodePipeline)中看到组织名称旁边的绿色勾号。虽然,我可以在“组织访问”部分看到我的组织名称,但 codepipeline 直到无法读取组织的私有 repos。【参考方案2】:

我们遇到了同样的问题。 此功能需要 Repo 管理员级别的权限。因此,您必须向您的组织请求对存储库的管理员级别访问权限。 我们最终在私有组织仓库中创建了一个具有管理员仓库权限的服务用户,然后我们可以访问 CI 工具。

【讨论】:

【参考方案3】:

您的组织可能需要以下步骤(但取决于配置)。

在 Github 上,

    点击您的个人资料头像。 转到“设置”。 从菜单中转到“应用程序”。 转到“授权的 OAuth 应用程序”选项卡。 选择 CodePipeline 为其授予组织访问权限。

【讨论】:

这行得通 - 我对其他答案感到困惑,因为我是管理员,并且从未有机会授予 Repo 级别的访问权限。谢谢! 谢谢,同样的问题,我是管理员,但无法使其正常工作。重复@Sushilinux 所说的步骤使其工作!【参考方案4】:

您需要具有管理员/所有者级别才能授予 AWS Codepipeline 访问您的组织存储库的权限。

我截取了一些屏幕截图以进行澄清。

步骤: 1. 前往https://github.com/settings/applications。这与按个人资料头像,在下拉菜单中按“设置”,然后在左侧菜单中按“应用程序”相同。 2. 按顶部菜单上的“授权 OAuth 应用程序”。 3. 单击 AWS CodePipeline 项。 4. 将会有一个页面显示权限和组织访问权限。 5. 按授予按钮,您的组织名称旁边将出现一个复选标记。

【讨论】:

以上是关于AWS CodePipeline 无法访问组织的存储库的主要内容,如果未能解决你的问题,请参考以下文章

与 BitBucket 集成时 AWS CodePipeline 的 AWS IAM 访问异常

AWS CloudFormation CodePipeline:无法从 GitHub 获取存储库的内容

由于权限错误,无法在 AWS CodePipeline 中完成部署阶段

在 CodePipeline 中创建使用另一个 AWS 账户的资源的管道

如何配置 AWS CodePipeline、CodeBuild 和 Elastic Beanstalk 以正确部署 Laravel 8 应用程序?

AWS:帮助在 Codepipeline 中设置 CodeDeploy