在中更改构建项目设置 AWS CodeBuild - AWS CodeBuild

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

在中更改构建项目设置 AWS CodeBuild

您可以使用 AWS CodeBuild 控制台 AWS CLI、或 AWS SDKs来更改构建项目的设置。

如果您向构建项目添加测试报告,请确保您的IAM角色具有中所述的权限测试报告权限

更改构建项目的设置(控制台)

要更改构建项目的设置,请执行以下过程:

  1. https://console.aws.amazon.com/codesuite/codebuild /home 中打开 AWS CodeBuild 控制台。

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

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

    • 选择要更改的构建项目的链接,然后选择构建详细信息

    • 选择要更改的构建项目旁边的按钮,选择查看详细信息,然后选择构建详细信息

您可以修改以下部分:

项目配置

项目配置部分,选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性。

描述

输入构建项目的可选描述,以帮助其他用户了解此项目的用途。

构建徽章

选择启用构建徽章,以使您的项目的构建状态可见且可嵌入。有关更多信息,请参阅 构建徽章示例

注意

如果您的源提供商是 Amazon S3,则构建徽章不适用。

启用并发构建限制

如果要限制此项目的并发构建数量,请执行以下步骤:

  1. 选择限制此项目可以启动的并发构建数量

  2. 并发构建限制中,输入此项目允许的并发构建的最大数量。此限制不得大于为该账户设置的并发构建限制。如果您尝试输入大于账户限制的数字,则会显示错误消息。

仅当当前构建数量小于或等于此限值时,才会启动新构建。如果当前构建计数达到此限值,则新构建将受到限制且不会运行。

启用公共构建访问权限

要向公众(包括无法访问 AWS 账户的用户)公开项目的生成结果,请选择 “启用公共生成访问权限”,然后确认要公开生成结果。以下属性用于公共构建项目:

公共构建服务角色

如果您想为您 CodeBuild 创建新的服务角色,请选择新服务角色;如果要使用现有的服务角色,请选择现有服务角色。

公共构建服务角色 CodeBuild 允许读取 CloudWatch 日志并下载项目构建的 Amazon S3 工件。您必须执行此操作,才能向公众提供项目的构建日志和构件。

服务角色

输入新的服务角色名称或现有服务角色名称。

要将项目的构建结果设为私有,请清除启用公共构建访问权限

有关更多信息,请参阅 获取公共构建项目 URLs

警告

在公开项目的构建结果时,应记住以下几点:

  • 项目的所有构建结果、日志和构件,包括项目为私有状态时运行的构建,都可向公众开放。

  • 所有构建日志和构件都向公众开放。环境变量、源代码和其他敏感信息可能已输出到构建日志和构件中。您必须谨慎筛选将哪些信息输出到构建日志。以下是一些最佳实操:

    • 不要在环境变量中存储敏感值,尤其是 AWS 访问密钥IDs和私有访问密钥。我们建议您使用 Amazon S EC2 ystems Manager 参数存储库或 AWS Secrets Manager 存储敏感值。

    • 请按照使用 Webhook 的最佳实操对哪些实体可以触发构建进行限制且不要将 buildspec 存储在项目本身中,以尽可能确保您的 webhook 安全无虞。

  • 恶意用户可以使用公共构建分发恶意构件。我们建议项目管理员查看所有拉取请求,验证拉取请求是否为合法更改。我们还建议您使用校验和验证所有构件,确保下载的构件正确无误。

其他信息

标签中,输入您希望支持 AWS 服务使用的任何标签的名称和值。使用添加行添加标签。最多可以添加 50 个标签。

来源

部分中,请选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性:

源提供商

选择源代码提供商类型。使用以下列表为您的源提供商选择适当的选项:

注意

CodeBuild 不支持 Bitbucket 服务器。

Amazon S3
存储桶

选择包含源代码的输入存储桶的名称。

S3 对象密钥或 S3 文件夹

输入ZIP文件名或包含源代码的文件夹的路径。输入正斜杠 (/) 以下载 S3 存储桶中的所有内容。

源版本

输入表示输入文件版本的对象的版本 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

CodeCommit
存储库

选择要使用的存储库。

参考类型

选择分支Git 标签提交 ID,以指定源代码的版本。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择该选项,以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

Git 子模块

如果您希望在存储库中包含 Git 子模块,请选择使用 Git 子模块

Bitbucket
凭证

选择 “默认来源凭据” 或 “自定义来源凭据”,然后按照说明管理默认来源凭据或自定义源凭据。

连接类型

选择CodeConnectionsOAuth应用程序密码个人访问令牌进行连接 CodeBuild。

Connection

选择 Bitbucket 连接或 Secrets Manager 密钥通过你指定的连接类型进行连接。

存储库

在我的 Bitbucket 账户中选择 “存储库” 或 “公共存储库”,然后进入存储库URL。

源版本

输入分支、提交 ID、标签,或引用以及提交 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择Git 克隆深度以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

Git 子模块

如果您希望在存储库中包含 Git 子模块,请选择使用 Git 子模块

构建状态

如果您希望向源提供商报告构建的开始和完成状态,请选择在您的构建开始和完成时向源提供商报告构建状态

为了能够向源提供商报告构建状态,与源提供商关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅源提供商访问权限

状态上下文中,输入要在 Bitbucket 提交状态中用于 name 参数的值。有关更多信息,请参阅 Bitbucket API 文档中的构建

对于 Target URL,输入要用于 Bitbucket 提交状态的url参数的值。有关更多信息,请参阅 Bitbucket API 文档中的构建

由 Webhook 触发的构建的状态将始终报告给源提供商。要将从控制台启动的版本或API呼叫报告给源提供商的状态,必须选择此设置。

如果项目的构建通过 webhook 触发,则必须将新的提交推送到存储库,此设置才能生效。

如果要在每次将代码更改推送到此存储库时生成源代码,请在 “主源 webhook 事件” 中,选择 “每次将代码更改推送到此存储库时都重建”。 CodeBuild 有关 webhook 和筛选条件组的更多信息,请参阅 Bitbucket Webhook 事件

GitHub
凭证

选择 “默认来源凭据” 或 “自定义来源凭据”,然后按照说明管理默认来源凭据或自定义源凭据。

连接类型

选择要连接的GitHub 应用程序OAuth、或个人访问令牌 CodeBuild。

Connection

选择要通过您指定的 GitHub 连接类型进行连接或 Secrets Manager 密钥进行连接。

存储库

在我的 GitHub 账户中选择 “存储库”、“公共存储库” 或 “GitHub 限定范围 webhook”,然后进入存储库。URL

源版本

输入分支、提交 ID、标签,或引用以及提交 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择Git 克隆深度以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

Git 子模块

如果您希望在存储库中包含 Git 子模块,请选择使用 Git 子模块

构建状态

如果您希望向源提供商报告构建的开始和完成状态,请选择在您的构建开始和完成时向源提供商报告构建状态

为了能够向源提供商报告构建状态,与源提供商关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅 源提供商访问权限

状态上下文中,输入要用于 GitHub 提交状态的context参数的值。有关更多信息,请参阅 GitHub 开发者指南中的创建提交状态

对于 Targ etURL,输入要用于 GitHub 提交状态的target_url参数的值。有关更多信息,请参阅 GitHub 开发者指南中的创建提交状态

由 Webhook 触发的构建的状态将始终报告给源提供商。要将从控制台启动的版本或API呼叫报告给源提供商的状态,必须选择此设置。

如果项目的构建通过 webhook 触发,则必须将新的提交推送到存储库,此设置才能生效。

如果要在每次将代码更改推送到此存储库时生成源代码,请在 “主源 webhook 事件” 中,选择 “每次将代码更改推送到此存储库时都重建”。 CodeBuild 有关 webhook 和筛选条件组的更多信息,请参阅 GitHub webhook 事件

GitHub Enterprise Server
凭证

选择 “默认来源凭据” 或 “自定义来源凭据”,然后按照说明管理默认来源凭据或自定义源凭据。

连接类型

选择CodeConnections要连接的个人访问令牌 CodeBuild。

Connection

选择 GitHub 企业连接或 Secrets Manager 密钥通过您指定的连接类型进行连接。

存储库

在我的 GitHub 企业账户中选择 “存储库” 或 “GitHub 企业级 webhook”,然后进入存储库。URL

源版本

输入拉取请求、分支、提交 ID、标签,或引用以及提交 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择Git 克隆深度以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

Git 子模块

如果您希望在存储库中包含 Git 子模块,请选择使用 Git 子模块

构建状态

如果您希望向源提供商报告构建的开始和完成状态,请选择在您的构建开始和完成时向源提供商报告构建状态

为了能够向源提供商报告构建状态,与源提供商关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅 源提供商访问权限

状态上下文中,输入要用于 GitHub 提交状态的context参数的值。有关更多信息,请参阅 GitHub 开发者指南中的创建提交状态

对于 Targ etURL,输入要用于 GitHub 提交状态的target_url参数的值。有关更多信息,请参阅 GitHub 开发者指南中的创建提交状态

由 Webhook 触发的构建的状态将始终报告给源提供商。要将从控制台启动的版本或API呼叫报告给源提供商的状态,必须选择此设置。

如果项目的构建通过 webhook 触发,则必须将新的提交推送到存储库,此设置才能生效。

不安全 SSL

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

如果要在每次将代码更改推送到此存储库时生成源代码,请在 “主源 webhook 事件” 中,选择 “每次将代码更改推送到此存储库时都重建”。 CodeBuild 有关 webhook 和筛选条件组的更多信息,请参阅 GitHub webhook 事件

GitLab
凭证

选择 “默认来源凭据” 或 “自定义来源凭据”,然后按照说明管理默认来源凭据或自定义源凭据。

连接类型

CodeConnections用于连接 GitLab 到 CodeBuild。

Connection

选择要 GitLab 连接的连接 CodeConnections。

存储库

选择要使用的存储库。

源版本

输入拉取请求 ID、分支、提交 ID、标签或引用以及提交 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择Git 克隆深度以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

构建状态

如果您希望向源提供商报告构建的开始和完成状态,请选择在您的构建开始和完成时向源提供商报告构建状态

为了能够向源提供商报告构建状态,与源提供商关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅 源提供商访问权限

GitLab Self Managed
凭证

选择 “默认来源凭据” 或 “自定义来源凭据”,然后按照说明管理默认来源凭据或自定义源凭据。

连接类型

CodeConnections用于将 GitLab 自助管理连接到 CodeBuild。

Connection

选择要连接的 GitLab 自管理连接 CodeConnections。

存储库

选择要使用的存储库。

源版本

输入拉取请求 ID、分支、提交 ID、标签或引用以及提交 ID。有关更多信息,请参阅 源版本示例 AWS CodeBuild

注意

我们建议您选择看起来不像提交的 Git 分支名称IDs,例如811dd1ba1aba14473856cee38308caed7190c0d5392f7。这可以帮助您避免 Git 签出与实际提交发生冲突。

Git 克隆深度

选择Git 克隆深度以创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择完整

构建状态

如果您希望向源提供商报告构建的开始和完成状态,请选择在您的构建开始和完成时向源提供商报告构建状态

为了能够向源提供商报告构建状态,与源提供商关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅 源提供商访问权限

环境

环境部分中,选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性:

置备模式

要更改配置模式,请选择更改配置模式,然后执行以下任一操作:

  • 要使用由管理的按需队列 AWS CodeBuild,请选择按需。使用按需队列,为您的构建 CodeBuild 提供计算。构建完成后,计算机就会被销毁。按需实例集是完全托管式的,并包括自动扩展功能以应对需求激增。

  • 要使用由管理的预留容量队列 AWS CodeBuild,请选择预留容量,然后选择队列名称。使用预留容量实例集,您可以为构建环境配置一组专用实例。这些计算机保持闲置状态,可以立即处理生成或测试,并缩短构建持续时间。使用预留容量实例集,您的计算机将始终处于运行状态,并且只要预调配完毕,它们就会继续产生成本。

有关信息,请参阅在预留容量队列上运行构建

环境映像

要更改构建映像,请选择覆盖映像,然后执行以下操作之一:

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

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

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

注意

CodeBuild 会替换自定义 Docker 镜像的。ENTRYPOINT

服务角色

请执行以下操作之一:

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

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

注意

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

其他配置
超时

指定一个介于 5 分钟到 36 小时之间的值,如果构建未完成,则在该值之后 CodeBuild 停止构建。如果小时分钟都留空,则将使用 60 分钟的默认值。

特权

如果您要构建 Docker 镜像或希望您的版本获得更高的权限,请选择启用此标志。 前提是你打算使用这个构建项目来构建 Docker 镜像。否则,尝试与 Docker 守护程序交互的所有关联的构建都将失败。您还必须启动 Docker 守护程序,以便您的构建与其交互。执行此操作的一种方法是通过运行以下构建命令在您的构建规范的 install 阶段初始化 Docker 守护程序。如果您选择了由 CodeBuild Docker 支持的构建环境镜像,请不要运行这些命令。

注意

默认情况下,为非版本启用 Docker 守护程序。VPC如果你想使用 Docker 容器进行VPC构建,请参阅 Docker Docs 网站上的运行时权限和 Linux 功能并启用特权模式。此外,Windows 不支持特权模式。

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
VPC

如果你 CodeBuild 想和你一起工作VPC:

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

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

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

有关更多信息,请参阅 使用 AWS CodeBuild 亚马逊 Virtual Private Cloud

计算

请选择可用选项之一。

环境变量

请输入每个环境变量的名称和值,然后选择类型,以供构建使用。

注意

CodeBuild 自动为您的 AWS 地区设置环境变量。如果您尚未将以下环境变量添加到 buildspec.yml 中,则必须设置这些变量:

  • AWS_ACCOUNT_ID

  • IMAGE_REPO_NAME

  • IMAGE_TAG

控制台和 AWS CLI 用户可以看到环境变量。如果您不担心环境变量的可见性,请设置名称字段,然后将类型设置为明文

我们建议您将具有敏感值的环境变量(例如访问密钥 ID、私有 AWS 访问 AWS 密钥或密码)作为参数存储在 Amazon Sy EC2 stems Manager Parameter Store 或 AWS Secrets Manager。

如果您使用 Amazon EC2 Systems Manager 参数存储,则在 “类型” 中选择 “参数”。在名称中,输入 CodeBuild 要引用的标识符。对于,输入存储在 Amazon Sy EC2 stems Manager 参数存储中的参数名称。使用名为 /CodeBuild/dockerLoginPassword 的参数作为示例,对于类型,选择参数。对于名称,请输入 LOGIN_PASSWORD。对于,请输入 /CodeBuild/dockerLoginPassword

重要

如果您使用 Amazon EC2 Systems Manager Parameter Store,我们建议您存储参数名称以/CodeBuild/(例如/CodeBuild/dockerLoginPassword)开头的参数。您可以使用 CodeBuild 控制台在 Amazon S EC2 ystems Manager 中创建参数。选择创建参数,然后按照对话框中的说明操作。(在该对话框中,对于KMS密钥,您可以指定账户中 AWS KMS 密钥的。ARN Amazon Sy EC2 stems Manager 使用此密钥在存储期间加密参数的值,并在检索期间对其进行解密。) 如果您使用 CodeBuild 控制台创建参数,则控制台会将参数名称的存储方式/CodeBuild/作为参数名称的开头。有关更多信息,请参阅《亚马逊系统管理器用户指南》中的 Systems Manager 参数存储和 Sy EC2 stems Manager 参数存储控制台演练

如果您的构建项目引用存储在 Amazon S EC2 ystems Manager Parameter Store 中的参数,则构建项目的服务角色必须允许该ssm:GetParameters操作。如果您之前选择了 “新建服务角色”,请将此操作 CodeBuild 包含在构建项目的默认服务角色中。但是,如果您选择了现有服务角色,必须单独将此操作添加到您的服务角色中。

如果您的构建项目引用了存储在 Amazon S EC2 ystems Manager Parameter Store 中且参数名称不以开头的参数,并且您选择了新服务角色,则必须更新该服务角色以允许访问不以开头的参数名称/CodeBuild//CodeBuild/这是因为该服务角色仅允许访问以 /CodeBuild/ 开头的参数名称。

如果您选择 “新建服务角色”,则该服务角色包括解密 Amazon Sy EC2 stems Manager 参数存储中/CodeBuild/命名空间下所有参数的权限。

您设置的环境变量将替换现有的环境变量。例如,如果 Docker 映像已经包含一个名为 MY_VAR 的环境变量(值为 my_value),并且您设置了一个名为 MY_VAR 的环境变量(值为 other_value),那么 my_value 将被替换为 other_value。同样,如果 Docker 映像已经包含一个名为 PATH 的环境变量(值为 /usr/local/sbin:/usr/local/bin),并且您设置了一个名为 PATH 的环境变量(值为 $PATH:/usr/share/ant/bin),那么/usr/local/sbin:/usr/local/bin 将被替换为文本值 $PATH:/usr/share/ant/bin

请勿使用以 CODEBUILD_ 打头的名称设置任何环境变量。此前缀是专为内部使用预留的。

如果具有相同名称的环境变量在多处都有定义,则应按照如下方式确定其值:

  • 构建操作调用开始时的值优先级最高。

  • 构建项目定义中的值优先级次之。

  • buildspec 声明中的值优先级最低。

如果您使用 Secrets Manager,对于类型,请选择 Secrets Manager。在名称中,输入 CodeBuild 要引用的标识符。对于,请使用模式 secret-id:json-key:version-stage:version-id 输入 reference-key。有关信息,请参阅 Secrets Manager reference-key in the buildspec file

重要

如果您使用 Secrets Manager,我们建议您存储名称以 /CodeBuild/(例如 /CodeBuild/dockerLoginPassword)开头的密钥。有关更多信息,请参阅《AWS Secrets Manager 用户指南》中的什么是 AWS Secrets Manager?

如果您的构建项目引用了 Secrets Manager 中存储的密钥,则构建项目的服务角色必须允许 secretsmanager:GetSecretValue 操作。如果您之前选择了 “新建服务角色”,请将此操作 CodeBuild 包含在构建项目的默认服务角色中。但是,如果您选择了现有服务角色,必须单独将此操作添加到您的服务角色中。

如果您的构建项目引用了 Secrets Manager 中存储的但密钥名称不以 /CodeBuild/ 开头的密钥,且您选择了新建服务角色,您必须更新该服务角色以允许访问不以 /CodeBuild/ 开头的密钥名称。这是因为该服务角色仅允许访问以 /CodeBuild/ 开头的密钥名称。

如果您选择新建服务角色,该服务角色将拥有解密 Secrets Manager 中 /CodeBuild/ 命名空间下的所有密钥的权限。

Buildspec

Buildspec 部分,选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性:

构建规范

请执行以下操作之一:

  • 如果您的源代码包含 buildspec 文件,请选择使用 buildspec 文件。默认情况下,在源代码根目录buildspec.yml中 CodeBuild查找名为的文件。如果您的 buildspec 文件使用不同的名称或位置,请在 Buildspec 名称中输入其从源根目录开始的路径(例如,buildspec-two.yml或。configuration/buildspec.yml 如果 buildspec 文件位于 S3 存储桶中,则该文件必须与您的构建项目位于同一 AWS 区域。 使用其指定 buildspec 文件ARN(例如arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。

  • 如果您的源代码不包括 buildspec 文件,或者如果您要运行的构建命令不是在源代码根目录的 buildspec.yml 文件中为 build 阶段指定的构建命令,则选择插入构建命令。对于构建命令,请输入您要在 build 阶段运行的命令。对于多个命令,使用 && 分开各个命令(例如 mvn test && mvn package)。要在其他阶段运行命令,或者,如果 build 阶段对应的命令列表特别长,请将 buildspec.yml 文件添加到源代码根目录,将命令添加到该文件中,然后选择在源代码根目录中使用 buildspec.yml

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

批量配置

批量配置部分,选择编辑。完成更改后,请选择更新配置,以保存新的配置。有关更多信息,请参阅 批量运行构建

您可以修改以下属性:

批量服务角色

为批量构建提供服务角色。

选择以下操作之一:

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

  • 如果您拥有批量服务角色,请选择现有服务角色。在服务角色中,选择对应的服务角色。

批量构建为批量配置引入了全新的安全角色。这个新角色是必需的,因为 CodeBuild 必须能够代表你调用StartBuildStopBuild、和RetryBuild操作才能将生成作为批处理的一部分运行。客户应该使用新角色,而不是他们在构建中使用的角色,原因有两个:

  • 向构建角色授予 StartBuildStopBuildRetryBuild 权限后,将允许单个构建通过 buildspec 启动多个构建。

  • CodeBuild 批处理生成提供了限制,限制了可用于批次构建的生成数量和计算类型。如果构建角色拥有这些权限,则构建本身就有可能绕过这些限制。

批处理允许的计算类型

选择批处理允许的计算类型。选择所有适用的选项。

批处理允许的最大构建数量

输入批处理允许的最大构建数量。如果批处理超过此限制,则会失败。

批处理超时

输入完成批量构建能够使用的最长时间。

合并构件

选择将批处理中的所有构件合并到一个位置,将批处理中的所有构件合并到一个位置。

批量报告模式

为批量构建选择所需的构建状态报告模式。

注意

仅当项目源为 Bitbucket 或 E GitHub nterprise 时,此字段才可用,并且在 “来源” 下选择了生成开始和完成时向源提供商报告构建状态。 GitHub

聚合构建

选择该选项,可将批处理中所有构建的状态合并到一个状态报告中。

单个构建

选择该选项,可分别报告批处理中所有构建的构建状态。

构件

构件部分中,选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性:

类型

请执行以下操作之一:

  • 如果您不想创建任何构建输出构件,请选择无构件。如果您只在运行构建测试或者想要将 Docker 映像推送到 Amazon ECR 存储库,则可能需要这样做。

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

    • 如果要使用项目名称作为生成输出ZIP文件或文件夹,请将 “名称” 留空。否则,请输入名称。(如果要输出ZIP文件,并且希望该文件具有ZIP文件扩展名,请务必在文件名后面加上该ZIP扩展名。)

    • 如果希望构建规范文件中指定的名称覆盖控制台中指定的任何名称,请选择启用语义版本控制。buildspec 文件中的名称是构建时计算得出的,使用 Shell 命令语言。例如,您可以将日期和时间附加到您的构件名称后面,以便确保其唯一性。为构件提供唯一名称可防止其被覆盖。有关更多信息,请参阅buildspec 语法

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

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

    • 如果不想加密构建构件,请选择删除构件加密

对于所需的每个辅助构件集:

  1. 对于构件标识符,输入少于 128 个字符且仅包含字母数字字符和下划线的值。

  2. 选择添加构件

  3. 按照前面步骤的说明配置辅助构件。

  4. 选择保存构件

其他配置
加密密钥

请执行以下操作之一:

  • 要使用您账户中的 AWS 托管式密钥 Amazon S3 对构建输出项目进行加密,请将加密密钥留空。这是默认模式。

  • 要使用客户托管密钥对构建输出项目进行加密,请在加密密钥中ARN输入客户托管密钥的。采用格式 arn:aws:kms:region-ID:account-ID:key/key-ID

缓存类型

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

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

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

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

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

      重要

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

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

    注意

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

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

日志

标签部分中,选择编辑。完成更改后,请选择更新配置,以保存新的配置。

您可以修改以下属性:

选择要创建的日志。您可以创建 Amazon CloudWatch 日志、Amazon S3 日志或两者兼而有之。

CloudWatch

如果你想要 Amazon CloudWatch Logs 日志:

CloudWatch 日志

选择CloudWatch 日志

组名

输入您的 Amazon CloudWatch 日志组的名称。

流名称

输入您的 Amazon CloudWatch 日志流名称。

S3

如果要创建 Amazon S3 日志:

S3 日志

选择 S3 日志

存储桶

选择您的日志的 S3 存储桶的名称。

路径前缀

输入日志的前缀。

禁用 S3 日志加密

如果您不希望加密您的 S3 日志,请选择此选项。

更改构建项目的设置 (AWS CLI)

有关 AWS CLI 搭配使用的信息 AWS CodeBuild,请参阅命令行参考

要使用更新 CodeBuild 项目 AWS CLI,请使用更新的属性创建一个JSON文件,然后将该文件传递给update-project命令。更新文件中未包含的所有属性保持不变。

在更新JSON文件中name,只需要属性和修改后的属性。name 属性用于标识要修改的项目。对于任何修改的结构,还必须包括这些结构所需的参数。例如,要修改项目的环境,需要 environment/typeenvironment/computeType 属性。以下是更新环境映像的示例:

{ "name": "<project-name>", "environment": { "type": "LINUX_CONTAINER", "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/amazonlinux2-x86_64-standard:4.0" } }

如果需要获取项目的当前属性值,请使用 batch-get-projects 命令获取正在修改的项目的当前属性,然后将输出写入到文件。

aws codebuild batch-get-projects --names "<project-name>" > project-info.json

这些区域有:project-info.json 文件包含一组项目,因此不能直接用于更新项目。但是,您可以从中复制要修改的属性 project-info.json 文件并将其粘贴到更新文件中,作为要修改的属性的基准。有关更多信息,请参阅 查看构建项目的详细信息 (AWS CLI)

按照中所述修改更新JSON文件创建构建项目 (AWS CLI),然后保存结果。修改完更新JSON文件后,运行update-project命令并传递更新JSON文件。

aws codebuild update-project --cli-input-json file://<update-project-file>

如果成功,则更新后的项目JSON将显示在输出中。如果缺少任何必需的参数,则会在输出中显示一条错误消息,标识缺少的参数。例如,如果缺少 environment/type 参数,则会显示以下错误消息:

aws codebuild update-project --cli-input-json file://update-project.json Parameter validation failed: Missing required parameter in environment: "type"

更改构建项目的设置 (AWS SDKs)

有关 AWS CodeBuild 与一起使用的信息 AWS SDKs,请参阅AWS 开发工具包和工具参考