GitHub 和 GitHub 企业服务器访问权限 CodeBuild - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GitHub 和 GitHub 企业服务器访问权限 CodeBuild

对于 GitHub,您可以使用个人访问令牌、OAuth应用程序、Secrets Manager 密钥或 GitHub 应用程序连接来访问源提供商。对于 E GitHub nterprise Server,您可以使用个人访问令牌、Secrets Manager 密钥或 GitHub 应用程序连接来访问源提供商。

GitHub GitHub 和 GitHub 企业服务器的应用程序连接

您可以使用 GitHub App 进行连接 CodeBuild。 GitHub 通过支持应用程序连接Amazon CodeConnections

源提供程序访问权限使您可以通过订阅使用或在中使用自托管的 GitHub 操作运行器 Amazon CodeBuild在中GitHub webhook 事件 CodeBuild使用 CreateWebhook来触发构建。

注意

CodeConnections 在少于. 的地区可用 CodeBuild。您可以在中使用跨区域连接。 CodeBuild在选择加入区域创建的连接不能在其他地区使用。有关更多信息,请参阅 Amazon CodeConnections 终端节点和限额

步骤 1:创建与 GitHub 应用程序(控制台)的连接

使用以下步骤使用 CodeBuild 控制台为您的项目添加连接 GitHub。

要创建与的连接 GitHub

步骤 2:授予 CodeBuild 项目IAM角色使用连接的访问权限

您可以授予 CodeBuild 项目IAM角色访问权限,以使用您的连接出售的 GitHub 令牌。

授予 CodeBuild 项目IAM角色访问权限
  1. 按照 CodeBuild 项目的说明 CodeBuild 允许与其他 Amazon 服务进行交互为 CodeBuild 项目创建IAM角色。

  2. 按照说明进行操作时,将以下IAM策略添加到您的 CodeBuild 项目角色以授予对连接的访问权限。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [ <connection-arn> ] } ] }

步骤 3:配置 CodeBuild 为使用新连接

您可以将连接配置为账户级凭证,并在项目中使用。

Amazon Web Services Management Console
要将连接配置为账户级别的凭证,请参阅 Amazon Web Services Management Console
  1. 对于源提供商,请选择GitHub

  2. 对于凭证,请执行以下任一操作:

    • 选择 “默认来源凭据”,使用您账户的默认来源凭据应用于所有项目。

      1. 如果您未连接到 GitHub,请选择 “管理默认来源凭据”。

      2. 对于 “凭据类型”,选择 “GitHub 应用程序”。

      3. 在 “连接” 中,选择使用现有连接或创建新连接。

    • 选择 “自定义来源凭据”,使用自定义来源凭据来覆盖您账户的默认设置。

      1. 对于 “凭据类型”,选择 “GitHub 应用程序”。

      2. 在 “连接” 中,选择使用现有连接或创建新连接。

Amazon CLI
要将连接配置为账户级别的凭证,请参阅 Amazon CLI
  • 打开终端(Linux、macOS 或 Unix)或命令提示符(Windows)。 Amazon CLI 使用运行import-source-credentials命令,--token为您的连接指定--auth-type--server-type、和。

    使用以下命令:

    aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type GITHUB --token <connection-arn>

您也可以为 CodeBuild 项目设置多个代币。有关更多信息,请参阅 将多个令牌配置为源代码级凭证

GitHub 和 GitHub 企业服务器访问令牌

访问令牌先决条件

在开始之前,必须向 GitHub 访问令牌添加适当的权限范围。

对于 GitHub,您的个人访问令牌必须具有以下范围。

  • repo:授予私有存储库的完全控制权。

  • repo:status:授予对公共和私有存储库提交状态的读/写权限。

  • admin:repo_hook:授予存储库挂钩的完全控制权。如果您的令牌具有 repo 范围,则不需要此权限范围。

  • admin: org_hook:授予对组织挂钩的完全控制权。只有当您使用组织 webhook 功能时,才需要此范围。

有关更多信息,请参阅了解 GitHub 网站上OAuth应用程序的范围

如果您使用的是细粒度的个人访问令牌,则根据您的用例,您的个人访问令牌可能需要以下权限:

  • 内容:只读:授予对私有仓库的访问权限。如果您使用私有仓库作为来源,则需要此权限。

  • 提交状态:读写:授予创建提交状态的权限。如果您的项目设置了 webhook,或者您启用了报告构建状态功能,则需要此权限。

  • Webhook:读写:授予管理 webhook 的权限。如果您的项目设置了 webhook,则需要此权限。

  • 拉取请求:只读:授予访问拉取请求的权限。如果您的 webhook 对拉取请求事件有FILE_PATH过滤器,则需要此权限。

  • 管理:读写:如果您使用自托管 GitHub 的 Actions 运行器功能,则需要此权限。 CodeBuild有关更多详细信息,请参阅为存储库创建注册令牌在中使用自托管的 GitHub 操作运行器 Amazon CodeBuild

注意

如果要访问组织仓库,请务必将该组织指定为访问令牌的资源所有者。

有关更多信息,请参阅网站上的细粒度个人访问令牌所需的权限。 GitHub

GitHub 使用访问令牌 Connect(控制台)

要使用控制台 GitHub 使用访问令牌将您的项目与之连接,请在创建项目时执行以下操作。有关信息,请参阅创建构建项目(控制台)

  1. 对于源提供商,请选择GitHub

  2. 对于凭证,请执行以下任一操作:

    • 选择 “默认来源凭据”,使用您账户的默认来源凭据应用于所有项目。

      1. 如果您未连接到 GitHub,请选择 “管理默认来源凭据”。

      2. 对于凭证类型,选择个人访问令牌

      3. 如果您选择了默认来源凭证,请为服务选择要用于存储令牌的服务,然后执行以下操作:

        • 如果您选择使用 S ecrets Manager,则可以选择使用现有密钥连接或创建新密钥并选择保存。有关如何创建新密钥的更多信息,请参阅创建令牌并将其存储在 Secrets Manager 密钥中

        • 如果您选择使用 CodeBuild,请输入您的GitHub 个人访问令牌并选择保存

    • 选择 “自定义来源凭据”,使用自定义来源凭据来覆盖您账户的默认设置。

      1. 对于凭证类型,选择个人访问令牌

      2. 在 C on nection 中,选择使用现有密钥连接或创建新密钥。

GitHub 使用访问令牌 Connect (CLI)

按照以下步骤使用访问令牌将您的项目连接到 GitHub 该项目。 Amazon CLI 有关 Amazon CLI 搭配使用的信息 Amazon CodeBuild,请参阅命令行参考

  1. 运行 import-source-credentials 命令:

    aws codebuild import-source-credentials --generate-cli-skeleton

    JSON-格式化的数据出现在输出中。将数据复制到安装的本地计算机或实例上某个位置的文件(例如import-source-credentials.json)。 Amazon CLI 按照下面所示修改复制的数据,并保存您的结果。

    { "serverType": "server-type", "authType": "auth-type", "shouldOverwrite": "should-overwrite", "token": "token", "username": "username" }

    替换以下内容:

    • server-type:必填值。用于此凭证的源提供商。有效值为GITHUBBITBUCKET、ENTERPRISEGITLAB、GITHUB _ 和 GITLAB SELF _ MANAGED。

    • auth-type:必填值。用于连接到存储库的身份验证类型。有效值为OAUTH、BASIC PERSONAL _ AUTH、ACCESS _ TOKEN CODECONNECTIONS、和 SECRETS _ MANAGER。对于 GitHub,只允许 PERSONAL ACCESS _ TOKEN。BASICAUTH只有使用 Bitbucket 应用程序密码才允许使用 _。

    • should-overwrite: 可选值。设置为 false 可防止覆盖存储库源凭证。设置为 true 可覆盖存储库源凭证。默认值为 true

    • token:必填值。对于 GitHub 我们的 GitHub 企业服务器,这是个人访问令牌。对于 Bitbucket,这是个人访问令牌或应用程序密码。对于身份验证类型CODECONNECTIONS,这是连接。ARN对于 auth-type SECRETS _MANAGER,这是秘密。ARN

    • username: 可选值。对于 GitHub 和 GitHub 企业服务器源提供程序,将忽略此参数。

  2. 要使用访问令牌连接您的账户,请切换到包含您在步骤 1 中保存的 import-source-credentials.json 文件的目录,然后重新运行 import-source-credentials 命令。

    aws codebuild import-source-credentials --cli-input-json file://import-source-credentials.json

    JSON格式化的数据将显示在输出中,并带有 Amazon 资源名称 (ARN)。

    { "arn": "arn:aws:codebuild:region:account-id:token/server-type" }
    注意

    如果您再次使用相同的服务器类型和身份验证类型运行 import-source-credentials 命令,则会更新存储的访问令牌。

    在您的账户与访问令牌关联后,您可以使用create-project来创建您的 CodeBuild 项目。有关更多信息,请参阅 创建构建项目 (Amazon CLI)

  3. 要查看连接的访问令牌,请运行 list-source-credentials 命令。

    aws codebuild list-source-credentials

    输出中会出现一个JSON格式化的sourceCredentialsInfos对象:

    { "sourceCredentialsInfos": [ { "authType": "auth-type", "serverType": "server-type", "arn": "arn" } ] }

    sourceCredentialsObject 包含连接的源凭证信息的列表:

    • authType 是凭证使用的身份验证类型。这可以是OAUTHBASIC_AUTHPERSONAL_ACCESS_TOKENCODECONNECTIONS、或SECRETS_MANAGER

    • serverType 是源提供商类型。这可以是GITHUBGITHUB_ENTERPRISEBITBUCKETGITLAB、或GITLAB_SELF_MANAGED

    • arnthe 是代币ARN的代币。

  4. 要断开与源提供商的连接并删除其访问令牌,请使用其运行delete-source-credentials命令ARN。

    aws codebuild delete-source-credentials --arn arn-of-your-credentials

    JSON格式化的数据将与已删除ARN的凭据一起返回。

    { "arn": "arn:aws:codebuild:region:account-id:token/server-type" }

GitHub OAuth应用程序

GitHub 使用OAuth(控制台)连接

要使用控制台将您的项目与 GitHub OAuth应用程序连接起来,请在创建项目时执行以下操作。有关信息,请参阅创建构建项目(控制台)

  1. 对于源提供商,请选择GitHub

  2. 对于凭证,请执行以下任一操作:

    • 选择 “默认来源凭据”,使用您账户的默认来源凭据应用于所有项目。

      1. 如果您未连接到 GitHub,请选择 “管理默认来源凭据”。

      2. 对于凭证类型,选择OAuth

      3. 如果您选择了默认来源凭证,请为服务选择要用于存储令牌的服务,然后执行以下操作:

        • 如果您选择使用 S ecrets Manager,则可以选择使用现有密钥连接或创建新密钥并选择保存。有关如何创建新密钥的更多信息,请参阅创建令牌并将其存储在 Secrets Manager 密钥中

        • 如果您选择使用 CodeBuild,请继续选择 Connect to GitHub

    • 选择 “自定义来源凭据”,使用自定义来源凭据来覆盖您账户的默认设置。

      1. 对于凭证类型,选择OAuth

      2. 在 C on nection 中,选择使用现有密钥连接或创建新密钥。

要查看您的授权OAuth应用程序,请导航到 “开启的应用程序” GitHub,并验证是否列出了名为 aws-codesuite Amazon CodeBuild (region) 拥有的应用程序。