的第三方源代码库示例 CodeBuild - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

的第三方源代码库示例 CodeBuild

Bitbucket 拉取请求和 webhook 过滤器示例 CodeBuild

Amazon CodeBuild 当源存储库为 Bitbucket 时,支持 webhook。这意味着,对于源代码存储在 Bitbucket 存储库中的 CodeBuild 构建项目,每次将代码更改推送到存储库时,都可以使用 webhook 来重建源代码。有关更多信息,请参阅 Bitbucket Webhook 事件

此示例向您演示如何使用 Bitbucket 存储库创建拉取请求。它还向你展示了如何使用 Bitbucket webhook CodeBuild 来触发创建项目的构建。

注意

使用 webhook 时,用户可能会触发意外构建。要降低这种风险,请参阅使用 Webhook 的最佳实操

先决条件

要运行此示例,您必须将您的 Amazon CodeBuild 项目与 Bitbucket 账户关联起来。

注意

CodeBuild 已更新其使用 Bitbucket 的权限。如果您之前将项目连接到 Bitbucket,但现在收到 Bitbucket 连接错误,则必须重新连接才能授予管理您的 webh CodeBuild ook 的权限。

创建将 Bitbucket 作为源存储库的构建项目并启用 Webhook

以下步骤介绍如何使用 Bitbucket 作为源存储库创建 Amazon CodeBuild 项目并启用 webhook。

  1. 打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 如果显示 CodeBuild 信息页面,请选择 “创建构建项目”。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目

  3. 选择创建构建项目

  4. 项目配置中:

    项目名称

    输入此构建项目的名称。每个 Amazon 账户中的构建项目名称必须是唯一的。您还可以包含构建项目的可选描述,以帮助其他用户了解此项目的用途。

  5. 中:

    源提供商

    选择 Bitbucket。按照说明连接(或重新连接)Bitbucket,然后选择授权

    存储库

    选择我的 Bitbucket 账户中的存储库

    如果您之前未连接过 Bitbucket 账户,请输入您的 Bitbucket 用户名和应用程序密码,然后选择保存 Bitbucket 凭证

    Bitbucket 存储库

    输入 Bitbucket 存储库的 URL。

  6. 主要源 webhook 事件中,选择以下内容。

    注意

    只有在上一步中选择了我的 Bitbucket 账户中的存储库主要源 Webhook 事件部分才可见。

    1. 创建项目时,选择每次将代码更改推送到此存储库时都会重新构建

    2. 事件类型中,选择一个或多个事件。

    3. 要在事件触发构建时进行筛选,请在在这些条件下开始构建下,添加一个或多个可选筛选条件。

    4. 要在未触发事件时进行筛选,请在在这些条件下不开始构建下,添加一个或多个可选筛选条件。

    5. 选择添加筛选条件组,以添加另一个筛选条件组(如果需要)。

    有关 Bitbucket webhook 事件类型和筛选的更多信息,请参阅 Bitbucket Webhook 事件

  7. 环境中:

    环境映像

    选择以下操作之一:

    要使用由 Amazon CodeBuild以下管理的 Docker 镜像,请执行以下操作:

    选择托管映像,然后选择操作系统运行时映像映像版本。从环境类型中进行选择(如果可用)。

    要使用其他 Docker 映像:

    选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。如果您针对外部注册表 URL 选择其他注册表,请使用 docker repository/docker image name 格式在 Docker Hub 中输入 Docker 映像的名称和标签。如果您选择 Amazon ECR,请使用 Amazon ECR 存储库Amazon ECR 映像在您的 Amazon 账户中选择 Docker 映像。

    要使用私有 Docker 映像,请执行以下操作:

    选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。对于映像注册表,选择其他注册表,然后输入您的私有 Docker 映像的凭证的 ARN。凭证必须由 Secrets Manager 创建。有关更多信息,请参阅什么是 Amazon Secrets Manager? 在《Amazon Secrets Manager 用户指南》中。

    服务角色

    选择以下操作之一:

    • 如果您没有 CodeBuild 服务角色,请选择 “新建服务角色”。在角色名称中,为新角色输入名称。

    • 如果您有 CodeBuild 服务角色,请选择现有服务角色。在角色 ARN 中,选择服务角色。

    注意

    使用控制台创建或更新构建项目时,可以同时创建 CodeBuild 服务角色。默认情况下,这个角色仅能与该构建项目配合使用。如果您使用控制台将此服务角色与另一个构建项目关联,则此角色将更新以便与关联的构建项目结合使用。一个服务角色最多可与 10 个构建项目结合使用。

  8. Buildspec 中,执行以下操作之一:

    • 选择使用 buildspec 文件,以在源代码根目录中使用 buildspec.yml 文件。

    • 选择插入构建命令,以使用控制台插入构建命令。

    有关更多信息,请参阅 Buildspec 参考

  9. 构件中:

    类型

    选择以下操作之一:

    • 如果您不想创建构建输出构件,请选择无构件

    • 要将构建输出存储在 S3 存储桶中,请选择 Amazon S3,然后执行以下操作:

      • 如果要将项目名称用于构建输出 ZIP 文件或文件夹,请将名称留空。否则,请输入名称。默认情况下,构件名称是项目名称。如果您要使用其他名称,请在构件名称框中输入该名称。如果您要输出 ZIP 文件,请包含 zip 扩展名。

      • 对于存储桶名称,请选择输出存储桶的名称。

      • 如果您在此过程的前面部分选择了插入构建命令,对于输出文件,请输入构建(该构建要放到构建输出 ZIP 文件或文件夹中)中的文件位置。对于多个位置,使用逗号将各个位置隔开(例如,appspec.yml, target/my-app.jar)。有关更多信息,请参阅 buildspec 语法files 的描述。

    其他配置

    展开其他配置并根据需要设置选项。

  10. 选择创建构建项目。在审核页面上,选择开始构建以运行构建。

使用 Bitbucket Webhook 触发构建

对于使用 Bitbucket webhook 的项目,当 Bitbucket 存储库检测到您的源代码发生变化时,会 Amazon CodeBuild 创建一个构建。

  1. 打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 在导航窗格上,选择构建项目,然后选择项目以与 Bitbucket 存储库和 Webhook 关联。有关创建 Bitbucket webhook 项目的信息,请参阅创建将 Bitbucket 作为源存储库的构建项目并启用 Webhook

  3. 在您项目的 Bitbucket 存储库中更改一些代码。

  4. 在 Bitbucket 存储库上创建拉取请求。有关更多信息,请参阅发出拉取请求

  5. 在 Bitbucket Webhook 页面上,选择查看请求,以查看最新事件的列表。

  6. 选择查看详细信息以查看返回的响应的详细信息 CodeBuild。其内容如下所示:

    "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..." "statusCode":200
  7. 导航到 Bitbucket 拉取请求页面以查看构建的状态。

GitHub 的企业服务器示例 CodeBuild

Amazon CodeBuild 支持将 GitHub 企业服务器作为源存储库。此示例说明在 GitHub 企业服务器存储库安装了证书时如何设置 CodeBuild 项目。它还展示了如何启用 webhook,以便每次将代码更改推送到 GitHub 企业服务器存储库时都能 CodeBuild 重新生成源代码。

先决条件

  1. 为您的 CodeBuild 项目生成个人访问令牌。我们建议您创建 GitHub 企业用户并为该用户生成个人访问令牌。将其复制到剪贴板,以便在创建 CodeBuild 项目时使用。有关更多信息,请参阅 GitHub 帮助网站上的为命令行创建个人访问令牌

    在创建个人访问令牌时,请在定义中包含存储库范围。

  2. 从 GitHub 企业服务器下载证书。 CodeBuild 使用该证书与存储库建立可信的 SSL 连接。

    Linux/macOS 客户端:

    从终端窗口中运行以下命令:

    echo -n | openssl s_client -connect HOST:PORTNUMBER \ | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem

    将命令中的占位符替换为以下值:

    HOST。您的 GitHub 企业服务器存储库的 IP 地址。

    PORTNUMBER。用于连接的端口号(例如,443)。

    folder。下载证书的文件夹。

    filename。证书文件的文件名。

    重要

    将证书另存为 .pem 文件。

    Windows 客户端:

    使用浏览器从 GitHub 企业服务器下载证书。要查看站点的证书详细信息,请选择挂锁图标。有关如何导出证书的信息,请参阅浏览器文档。

    重要

    将证书另存为 .pem 文件。

  3. 将您的证书文件上传到 S3 存储桶。有关如何创建 S3 存储桶的信息,请参阅如何创建 S3 存储桶? 有关如何将对象上传到 S3 存储桶的信息,请参阅如何将文件和文件夹上传至存储桶?

    注意

    此存储桶必须与您的版本位于同一 Amazon 区域。例如,如果您指示 CodeBuild 在美国东部(俄亥俄州)地区运行构建,则存储桶必须位于美国东部(俄亥俄州)区域。

创建以 GitHub企业服务器为源存储库的构建项目并启用 webhook(控制台)

  1. 打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 如果显示 CodeBuild 信息页面,请选择 “创建构建项目”。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目

  3. 项目名称中,输入此构建项目的名称。每个 Amazon 账户中的构建项目名称必须是唯一的。您还可以包含构建项目的可选描述,以帮助其他用户了解此项目的用途。

  4. 中,在源提供程序中,选择GitHub 企业

    • 对于个人访问令牌,粘贴您复制到剪贴板的令牌,然后选择保存令牌。在存储库 URL 中,输入您的 GitHub 企业服务器存储库的 URL。

      注意

      您只需输入并保存一次个人访问令牌。所有 future Amazon CodeBuild 项目都使用此代币。

    • 存储库 URL 中,输入您的存储库的路径,包括存储库的名称。

    • 展开其他配置

    • 选择每次将代码推送到此存储库时都会重建以便每次将代码推送到此存储库时进行重建。

    • 选择 “启用不安全 SSL”,以便在连接到 GitHub 企业服务器项目存储库时忽略 SSL 警告。

      注意

      建议您仅将启用不安全的 SSL 用于测试。它不应在生产环境中使用。

  5. 环境中:

    对于环境映像,执行下列操作之一:

    • 要使用由管理的 Docker 映像 Amazon CodeBuild,请选择托管映像,然后从 “操作系统”、“运行时”、“映像” 和 “映像版本” 中进行选择。从环境类型中进行选择(如果可用)。

    • 要使用其他 Docker 映像,请选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。如果您针对外部注册表 URL 选择其他注册表,请使用 docker repository/docker image name 格式在 Docker Hub 中输入 Docker 映像的名称和标签。如果您选择 Amazon ECR,请使用亚马逊 ECR 存储库和 A mazon ECR 镜像在您的账户中选择 Docker 镜像。 Amazon

    • 要使用私有 Docker 映像,请选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。对于映像注册表,选择其他注册表,然后输入您的私有 Docker 映像的凭证的 ARN。凭证必须由 Secrets Manager 创建。有关更多信息,请参阅《Amazon Secrets Manager 用户指南》中的什么是 Amazon Secrets Manager?

  6. 服务角色中,执行下列操作之一:

    • 如果您没有 CodeBuild 服务角色,请选择 “新建服务角色”。在角色名称中,为新角色输入名称。

    • 如果您有 CodeBuild 服务角色,请选择现有服务角色。在角色 ARN 中,选择服务角色。

    注意

    使用控制台创建或更新构建项目时,可以同时创建 CodeBuild 服务角色。默认情况下,这个角色仅能与该构建项目配合使用。如果您使用控制台将此服务角色与另一个构建项目关联,则此角色将更新以便与关联的构建项目结合使用。一个服务角色最多可与 10 个构建项目结合使用。

  7. 展开其他配置

    如果您 CodeBuild 想使用您的 VPC:

    • 对于 VPC,请选择 CodeBuild 使用的 VPC ID。

    • 对于 VPC 子网,请选择包含使用的 CodeBuild 资源的子网。

    • 对于 VPC 安全组,请选择 CodeBuild 用于允许访问 VPC 中资源的安全组。

    有关更多信息,请参阅 Amazon CodeBuild 与亚马逊 Virtual Private Cloud 配合使用

  8. Buildspec 中,执行以下操作之一:

    • 选择使用 buildspec 文件,以在源代码根目录中使用 buildspec.yml 文件。

    • 选择插入构建命令,以使用控制台插入构建命令。

    有关更多信息,请参阅 Buildspec 参考

  9. 构件中,对于类型,执行以下操作之一:

    • 如果您不想创建构建输出构件,请选择无构件

    • 要将构建输出存储在 S3 存储桶中,请选择 Amazon S3,然后执行以下操作:

      • 如果要将项目名称用于构建输出 ZIP 文件或文件夹,请将名称留空。否则,请输入名称。默认情况下,构件名称是项目名称。如果您要使用其他名称,请在构件名称框中输入该名称。如果您要输出 ZIP 文件,请包含 zip 扩展名。

      • 对于存储桶名称,请选择输出存储桶的名称。

      • 如果您在此过程的前面部分选择了插入构建命令,对于输出文件,请输入构建(该构建要放到构建输出 ZIP 文件或文件夹中)中的文件位置。对于多个位置,使用逗号将各个位置隔开(例如,appspec.yml, target/my-app.jar)。有关更多信息,请参阅buildspec 语法files 的描述。

  10. 对于缓存类型,请选择下列选项之一:

    • 如果您不想使用缓存,请选择无缓存

    • 如果要使用 Amazon S3 缓存,请选择 Amazon S3,然后执行以下操作:

      • 对于存储桶,选择存储缓存的 S3 存储桶的名称。

      • (可选)对于缓存路径前缀,输入 Amazon S3 路径前缀。缓存路径前缀值类似于目录名称。它使您能够在存储桶的同一目录下存储缓存。

        重要

        请勿将尾部斜杠 (/) 附加到路径前缀后面。

    • 如果想要使用本地缓存,请选择本地,然后选择一个或多个本地缓存模式。

      注意

      Docker 层缓存模式仅适用于 Linux。如果您选择该模式,您的项目必须在特权模式下运行。

    使用缓存可节省大量构建时间,因为构建环境的可重用部分被存储在缓存中,并且可跨构建使用。有关在 buildspec 文件中指定缓存的信息,请参阅buildspec 语法。有关缓存的更多信息,请参阅 在 Amazon CodeBuild 中构建缓存

  11. 选择创建构建项目。在构建项目页面上,选择开始构建

  12. 如果您在中启用了 Webhook,将出现创建 Webhook 对话框,其中显示负载 URL密钥的值。

    重要

    创建 Webhook 对话框只出现一次。请复制负载 URL 和私有密钥。在 GitHub 企业服务器中添加 webhook 时需要它们。

    如果您需要再次生成有效负载 URL 和密钥,则必须先从 GitHub 企业服务器存储库中删除 webhook。在您的 CodeBuild 项目中,清除 Webhook 复选框,然后选择保存。然后,您可以在选中 Webhook 复选框的情况下创建或更新 CodeBuild项目。创建 webhook 对话框将再次出现。

  13. 在 GitHub 企业服务器中,选择存储 CodeBuild 项目的存储库。

  14. 选择设置,选择挂钩和服务,然后选择添加 webhook

  15. 输入负载 URL 和私有密钥,接受其他字段的默认值,然后选择添加 Webhook

  16. 返回您的 CodeBuild 项目。关闭创建 Webhook 对话框,然后选择开始构建

GitHub 的拉取请求和 webhook 过滤器示例 CodeBuild

Amazon CodeBuild 当源存储库为时,支持 webhook。 GitHub这意味着,对于源代码存储在存储 GitHub 库中的 CodeBuild 构建项目,每次将代码更改推送到存储库时,都可以使用 webhook 来重建源代码。有关 CodeBuild 示例,请参阅Amazon CodeBuild 示例

注意

使用 webhook 时,用户可能会触发意外构建。要降低这种风险,请参阅使用 Webhook 的最佳实操

创建以源存储库 GitHub为基础的构建项目并启用 webhook(控制台)

  1. 打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 如果显示 CodeBuild 信息页面,请选择 “创建构建项目”。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目

  3. 选择创建构建项目

  4. 项目配置中:

    项目名称

    输入此构建项目的名称。每个 Amazon 账户中的构建项目名称必须是唯一的。您还可以包含构建项目的可选描述,以帮助其他用户了解此项目的用途。

  5. 中:

    源提供商

    选择GitHub。按照说明进行连接(或重新连接), GitHub 然后选择 “授权”。

    存储库

    在我的 GitHub账户中选择 “存储库”

    GitHub 存储库

    输入 GitHub 存储库的 URL。

  6. 主要源 webhook 事件中,选择以下内容。

    注意

    只有在上一步中选择了我的 GitHub 账户中的 “存储库” 时,“主要来源 webhook 事件” 部分才可见。

    1. 创建项目时,选择每次将代码更改推送到此存储库时都会重新构建

    2. 事件类型中,选择一个或多个事件。

    3. 要在事件触发构建时进行筛选,请在在这些条件下开始构建下,添加一个或多个可选筛选条件。

    4. 要在未触发事件时进行筛选,请在在这些条件下不开始构建下,添加一个或多个可选筛选条件。

    5. 选择添加筛选条件组,以添加另一个筛选条件组(如果需要)。

    有关 GitHub webhook 事件类型和过滤器的更多信息,请参阅GitHub webhook 事件

  7. 环境中:

    环境映像

    选择以下操作之一:

    要使用由 Amazon CodeBuild以下管理的 Docker 镜像,请执行以下操作:

    选择托管映像,然后选择操作系统运行时映像映像版本。从环境类型中进行选择(如果可用)。

    要使用其他 Docker 映像:

    选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。如果您针对外部注册表 URL 选择其他注册表,请使用 docker repository/docker image name 格式在 Docker Hub 中输入 Docker 映像的名称和标签。如果您选择 Amazon ECR,请使用 Amazon ECR 存储库Amazon ECR 映像在您的 Amazon 账户中选择 Docker 映像。

    要使用私有 Docker 映像,请执行以下操作:

    选择自定义映像。对于环境类型,请选择 ARMLinuxLinux GPUWindows。对于映像注册表,选择其他注册表,然后输入您的私有 Docker 映像的凭证的 ARN。凭证必须由 Secrets Manager 创建。有关更多信息,请参阅什么是 Amazon Secrets Manager? 在《Amazon Secrets Manager 用户指南》中。

    服务角色

    选择以下操作之一:

    • 如果您没有 CodeBuild 服务角色,请选择 “新建服务角色”。在角色名称中,为新角色输入名称。

    • 如果您有 CodeBuild 服务角色,请选择现有服务角色。在角色 ARN 中,选择服务角色。

    注意

    使用控制台创建或更新构建项目时,可以同时创建 CodeBuild 服务角色。默认情况下,这个角色仅能与该构建项目配合使用。如果您使用控制台将此服务角色与另一个构建项目关联,则此角色将更新以便与关联的构建项目结合使用。一个服务角色最多可与 10 个构建项目结合使用。

  8. Buildspec 中,执行以下操作之一:

    • 选择使用 buildspec 文件,以在源代码根目录中使用 buildspec.yml 文件。

    • 选择插入构建命令,以使用控制台插入构建命令。

    有关更多信息,请参阅 Buildspec 参考

  9. 构件中:

    类型

    选择以下操作之一:

    • 如果您不想创建构建输出构件,请选择无构件

    • 要将构建输出存储在 S3 存储桶中,请选择 Amazon S3,然后执行以下操作:

      • 如果要将项目名称用于构建输出 ZIP 文件或文件夹,请将名称留空。否则,请输入名称。默认情况下,构件名称是项目名称。如果您要使用其他名称,请在构件名称框中输入该名称。如果您要输出 ZIP 文件,请包含 zip 扩展名。

      • 对于存储桶名称,请选择输出存储桶的名称。

      • 如果您在此过程的前面部分选择了插入构建命令,对于输出文件,请输入构建(该构建要放到构建输出 ZIP 文件或文件夹中)中的文件位置。对于多个位置,使用逗号将各个位置隔开(例如,appspec.yml, target/my-app.jar)。有关更多信息,请参阅 buildspec 语法files 的描述。

    其他配置

    展开其他配置并根据需要设置选项。

  10. 选择创建构建项目。在审核页面上,选择开始构建以运行构建。

验证检查

  1. 打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 在导航窗格中,选择构建项目

  3. 请执行以下操作之一:

    • 选择带有要验证的 Webhook 的构建项目的链接,然后选择构建详细信息

    • 选择带有要验证的 Webhook 的构建项目旁边的按钮,选择查看详细信息,然后选择构建详细信息选项卡。

  4. 主要源 Webhook 事件中,选择 Webhook URL 链接。

  5. 在存储 GitHub 库中,在 “设置” 页面的 “Webhooks” 下,确认已选中 “拉取请求推送”。

  6. 在您的个人 GitHub 资料设置中,在 “个人设置”、“应用程序”、“已授权的 OAuth 应用程序” 下,您应该会看到您的应用程序已被授权访问您选择的 Amazon 区域。