您可以使用 GitHub 应用程序与 CodeBuild 连接。通过 AWS CodeConnections 支持 GitHub 应用程序连接。
具有源提供商访问权限,您就可以使用 CreateWebhook 来订阅 GitHub Webhook 事件,或使用 CodeBuild 中的 教程:配置 CodeBuild 托管的 GitHub Actions 运行器,从而触发构建。
注意
CodeConnections 的可用区域比 CodeBuild 更少。您可以在 CodeBuild 中使用跨区域连接。在选择加入区域创建的连接不能在其他区域中使用。有关更多信息,请参阅 AWS CodeConnections 终端节点和限额。
主题
步骤 1:创建到 GitHub 应用程序的连接(控制台)
通过以下步骤,可使用 CodeBuild 控制台为 GitHub 中的项目添加连接。
创建到 GitHub 的连接
-
按照《开发人员工具用户指南》中的说明来创建与 GitHub 的连接。
步骤 2:向 CodeBuild 项目 IAM 角色授予使用连接的权限
您可以向 CodeBuild 项目 IAM 角色授予权限,以便使用通过您的连接提供的 GitHub 令牌。
向 CodeBuild 项目 IAM 角色授予权限
-
按照 允许 CodeBuild 与其他 AWS 服务进行交互 中的说明为您的 CodeBuild 项目创建 IAM 角色。
-
按照说明进行操作时,将以下 IAM 策略添加到您的 CodeBuild 项目角色,以便授予对连接的访问权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
步骤 3:配置 CodeBuild 以使用新连接
您可以将连接配置为账户级别凭证,并在项目中使用。
在 AWS Management Console 中将连接配置为账户级别凭证
-
对于源提供商,选择 GitHub。
-
对于凭证,执行以下操作之一:
-
选择默认来源凭证,使用您账户的默认来源凭证应用于所有项目。
-
如果未连接到 GitHub,请选择管理默认来源凭证。
-
对于凭证类型,选择 GitHub 应用程序。
-
在连接中,选择使用现有连接或创建新连接。
-
-
选择自定义来源凭证,以便使用自定义来源凭证来覆盖您账户的默认设置。
-
对于凭证类型,选择 GitHub 应用程序。
-
在连接中,选择使用现有连接或创建新连接。
-
-
您也可为 CodeBuild 项目设置多个令牌。有关更多信息,请参阅 将多个令牌配置为源级别凭证。
排查 GitHub 应用程序的问题
以下信息有助于解决 GitHub 应用程序的常见问题。
在非预期区域安装适用于 GitHub 应用程序的 AWS 连接器
问题:您从 GitHub Marketplace 安装了适用于 GitHub 的 AWS 连接器,但在非预期区域创建了连接。如果您尝试在 GitHub 网站上重新配置应用程序,因为该应用程序已安装在您的 GitHub 账户中,它将无法运行。
可能的原因:应用程序已安装在您的 GitHub 账户中,因此您只能重新配置应用程序权限。
推荐的解决方案:您可以在期望区域使用安装 ID 创建新连接。
-
在 https://console.aws.amazon.com/codesuite/settings/connections
打开 CodeConnections 控制台,然后使用 AWS 控制台导航栏中的区域选择器导航到期望区域。 -
按照《开发人员工具用户指南》中的说明来创建与 GitHub 的连接。
注意
由于您已经安装了适用于 GitHub 应用程序的 AWS 连接器,因此您可以选择该连接器,而不是安装新应用程序。
GitHub 应用程序连接无权访问存储库
问题:使用连接的 AWS 服务(例如 CodeBuild 或 CodePipeline)报告称,它无权访问存储库或存储库不存在。一些可能的错误消息包括:
-
Authentication required for primary source.
-
Unable to create webhook at this time. Please try again later.
-
Failed to create webhook. GitHub API limit reached. Please try again later.
- 可能的原因:您可能一直在使用 GitHub 应用程序,但尚未授予 webhook 权限范围。
-
推荐的解决方案:要授予所需的权限范围,请按照导航到要查看或修改的 GitHub 应用程序
中的说明来配置已安装的应用程序。在权限部分下面,您会看到该应用程序没有 webhook 权限,并且您可以选择查看新请求的权限。查看并接受新权限。有关更多信息,请参阅批准 GitHub 应用程序的更新权限 。 - 可能的原因:连接按预期运行,但突然无权访问存储库。
-
可能的解决方案:首先查看您的授权
和安装 情况,然后验证 GitHub 应用程序是否已授权并已安装。如果 GitHub 应用程序的安装已暂停,则需要将其取消暂停。如果 GitHub 应用程序未获得 UAT(用户访问令牌) 连接的授权,或者未为 IAT(安装访问令牌) 连接安装应用程序,则现有连接将无法再使用,您将需要创建一个新连接。请注意,重新安装 GitHub 应用程序不会恢复与旧安装关联的先前连接。 可能的解决方案:如果连接是 UAT 连接,请确保未并发使用该连接,例如在多个 CodeBuild 并发构建运行中使用。这是因为,如果连接刷新了即将到期的令牌,GitHub 会立即使之前发放的 UAT 失效。如果您需要为多个并发 CodeBuild 构建使用 UAT 连接,则可以创建多个连接并单独使用每个连接。
可能的解决方案:如果过去 6 个月内未使用 UAT 连接,GitHub 会使该连接失效。要修复此问题,请创建新的连接。
- 可能的原因:您可能在未安装应用程序的情况下使用 UAT 连接。
-
推荐的解决方案:尽管创建 UAT 连接不需要将连接与 GitHub 应用程序安装相关联,但需要安装应用程序才能访问存储库。按照说明来检查安装
,确保已安装 GitHub 应用程序。如果未安装,请导航到 GitHub 应用程序的页面 来安装应用程序。有关 UAT 访问权限的更多信息,请参阅关于用户访问令牌 。
AWS 服务的 IAM 角色缺少必需的 IAM 权限。
问题:您看到以下任何错误消息:
-
Access denied to connection
<connection-arn>
-
Failed to get access token from
<connection-arn>
推荐的解决方案:通常,您使用了与 AWS 服务(例如 CodePipeline 或 CodeBuild)的连接。当您为 AWS 服务指定 IAM 角色时,AWS 服务可以使用该角色的权限来代表您执行操作。确保 IAM 角色具有必要的权限。有关必要的 IAM 权限的更多信息,请参阅《开发人员工具控制台用户指南》中的向 CodeBuild 项目 IAM 角色授予使用连接的权限以及 AWS CodeStar 通知和 CodeConnections 的身份和访问管理。