本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更改构建项目的设置(控制台)
要更改构建项目的设置,请执行以下步骤:
打开Amazon CodeBuild控制台位于https://console.aws.amazon.com/codesuite/codebuild/home
。 -
在导航窗格中,选择 Build projects。
-
请执行下列操作之一:
-
选择要更改的生成项目的链接,然后选择 Build details (生成详细信息)。
-
选择要更改的生成项目旁边的按钮,选择 View details (查看详细信息),然后选择 Build details (生成详细信息)。
-
您可以修改以下部分:
项目配置
在项目配置部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性。
- 描述
-
输入构建项目的可选描述,以帮助其他用户了解此项目的用途。
- 建造徽章
-
选择 Enable build badge (启用生成徽章),以使您的项目的生成状态可见且可嵌入。有关更多信息,请参阅构建徽章示例:
注意
如果您的源提供商是 Amazon S3,则构建徽章不适用。
- 启用并发生成限制
-
如果要限制此项目的并发生成数量,请执行以下步骤:
-
选择限制此项目可以启动的并发生成数量。
-
在并发编译限制,输入此项目允许的最大并发生成数。此限制不能大于为该账户设置的并发生成限制。如果您尝试输入一个大于账户限制的数字,则会显示一条错误消息。
仅当当前构建数量小于或等于此限值时,才会启动新构建。如果当前构建计数达到此限值,则新构建将受到限制且不会运行。
-
- 其他信息
-
对于标签,输入要支持的任意标签的名称和值Amazon要使用的服务。使用 Add row 添加标签。您最多可以添加 50 个标签。
源
在来源部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性:
- 来源提供商
-
选择源代码提供者类型。使用以下列表选择适合您的来源提供商:
注意
CodeBuild不支持 Bitbucket 服务器。
环境
在环境部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性:
- 环境图片
-
要更改构建映像,请选择覆盖图片然后执行以下任一操作:
-
要使用由 Amazon CodeBuild 托管的 Docker 映像,请选择 Managed image (托管映像),然后从 Operating system (操作系统)、Runtime(s) (运行时) 和 Image (映像) 以及 Image version (映像版本) 中进行相应选择。从 Environment type (环境类型) 中进行选择(如果可用)。
-
要使用其他 Docker 映像,请选择 Custom image (自定义映像)。对于环境类型,选择手臂,Linux的,Linux G,或Windows。如果你选择其他注册表,对于外部注册表 URL,在 Docker Hub 中输入 Docker 镜像的名称和标签,格式为
。如果你选择亚马逊 ECR,使用亚马逊 ECR 存储库和亚马逊 ECR 图片选择你的 Docker 镜像Amazon账户。docker repository
/docker image name
-
要使用私有 Docker 镜像,请选择自定义图片。对于环境类型,选择手臂,Linux的,Linux G,或Windows。对于 Image registry (映像注册表),选择 Other registry (其他注册表),然后输入您的私有 Docker 映像的凭证的 ARN。凭证必须由 Secrets Manager 创建。有关更多信息,请参阅什么是Amazon Secrets Manager?在Amazon Secrets Manager用户指南。
注意
CodeBuild覆盖
ENTRYPOINT
用于自定义 Docker 镜像。 -
- 特权
-
选择特权前提是你打算使用这个构建项目来构建 Docker 镜像。否则,尝试与 Docker 守护程序交互的所有关联的构建都将失败。您还必须启动 Docker 守护程序,以便您的构建与其交互。执行此操作的一种方法是通过运行以下构建命令在您的构建规范的
install
阶段初始化 Docker 守护程序。如果您选择了由具有 Docker 支持的 CodeBuild 提供的构建环境映像,请不要运行这些命令。注意
默认情况下,Docker 容器不允许访问任何设备。特权模式将授予构建项目的 Docker 容器访问所有设备的权限。有关更多信息,请参阅 Docker 文档网站上的运行时权限和 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"
- 服务角色
请执行下列操作之一:
-
如果你没有CodeBuild服务角色,选择新的服务角色。在 Role name 中,为新角色输入名称。
-
如果你有一个CodeBuild服务角色,选择现有服务角色。在角色 ARN,选择服务角色。
注意
使用控制台创建构建项目时,可以创建CodeBuild同时扮演服务角色。默认情况下,这个角色仅能与该构建项目配合使用。如果您使用控制台将此服务角色与另一个构建项目关联,则此角色将更新以便与关联的构建项目结合使用。一个服务角色最多可与 10 个构建项目结合使用。
-
- 其他配置
-
- 超时
-
指定一个介于 5 分钟到 8 小时之间的值,之后CodeBuild如果构建未完成,则停止构建。如果 hours 和 minutes 都留空,则将使用 60 分钟的默认值。
- VPC
如果要将 CodeBuild 与您的 VPC 结合使用:
-
对于 VPC,选择 CodeBuild 使用的 VPC ID。
-
对于VPC 子网,选择包含以下资源的子网CodeBuild使用。
-
对于VPC 安全组,选择符合以下条件的安全组CodeBuild用于允许访问 VPC 中的资源。
有关更多信息,请参阅使用Amazon CodeBuild使用亚马逊虚拟私有云:
-
- 计算
-
选择一个可用选项。
- 环境变量
-
输入名称和值,然后选择每个环境变量的类型以供生成使用。
注意
CodeBuild为您设置环境变量Amazon自动区域。如果您尚未将以下环境变量添加到 buildspec.yml 中,则必须设置这些变量:
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
控制台和 Amazon CLI 用户可以查看环境变量。如果您不担心环境变量的可见性,请设置 Name 和 Value 字段,然后将 Type 设置为 Plaintext。
我们建议您存储具有敏感值的环境变量,例如Amazon访问密钥 ID,一个Amazon秘密访问密钥,或者在 Amazon EC2 Systems Manager 参数存储中作为参数的密码或Amazon Secrets Manager。
如果您使用亚马逊 EC2 系统管理器参数存储,那么类型,选择参数。对于 Name (名称),输入标识符供 CodeBuild 引用。对于价值,输入存储在 Amazon EC2 Systems Manager 参数存储中的参数名称。使用名为
/CodeBuild/dockerLoginPassword
的参数作为示例,对于 Type (类型),选择 Parameter (参数)。对于 Name(名称),请输入LOGIN_PASSWORD
。对于 Value(值),输入/CodeBuild/dockerLoginPassword
。重要
如果您使用 Amazon EC2 Systems Manager Parameter Store,我们建议您存储参数名称以开头的参数
/CodeBuild/
(例如,/CodeBuild/dockerLoginPassword
)。你可以使用CodeBuild控制台用于在 Amazon EC2 系统管理器中创建参数。选择 Create parameter (创建参数),然后按照对话框中的说明操作。(在该对话框中,对于KMS 密钥,你可以指定的 ARNAmazon KMS输入您的账户。 Amazon EC2 Systems Manager 使用此密钥在存储期间加密参数的值,并在检索期间对其进行解密。) 如果您使用 CodeBuild 控制台创建了一个参数,控制台将在参数名称被存储时以/CodeBuild/
作为它的开头。有关更多信息,请参阅系统管理器参数存储和系统管理器参数存储控制台演练在亚马逊 EC2 系统管理器用户指南。如果您的构建项目引用存储在 Amazon EC2 Systems Manager Parameter Store 中的参数,则构建项目的服务角色必须允许
ssm:GetParameters
行动。如果您之前选择了 New service role (新建服务角色),CodeBuild 将在您的构建项目的默认服务角色中包含此操作。但是,如果您选择了 Existing service role (现有服务角色),必须单独将此操作添加到您的服务角色中。如果您的构建项目引用存储在 Amazon EC2 Systems Manager Parameter Store 中的参数,且参数名称不是以开头的
/CodeBuild/
,然后你选择了新的服务角色,则必须更新该服务角色才能允许访问不以开头的参数名称/CodeBuild/
。这是因为该服务角色仅允许访问以/CodeBuild/
开头的参数名称。如果你选择新的服务角色,服务角色包括解密以下所有参数的权限
/CodeBuild/
亚马逊 EC2 系统管理器参数存储中的命名空间。您设置的环境变量将替换现有的环境变量。例如,如果 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_
打头的名称设置任何环境变量。此前缀是专为 内部使用预留的。如果具有相同名称的环境变量在多处都有定义,则应按照如下方式确定其值:
-
构建操作调用开始时的值优先级最高。
-
构建项目定义中的值优先级次之。
-
构建规范声明中的值优先级最低。
如果你使用 Secrets Manager,对于类型,选择密钥管理器。对于 Name (名称),输入标识符供 CodeBuild 引用。对于 Value (值),请使用模式
输入secret-id
:json-key
:version-stage
:version-id
reference-key
。有关信息,请参阅 Secrets Manager reference-key in the buildspec file。重要
如果您使用 Secrets Manager,我们建议您存储名称以开头的密钥
/CodeBuild/
(例如,/CodeBuild/dockerLoginPassword
)。有关更多信息,请参阅什么是Amazon Secrets Manager?在Amazon Secrets Manager用户指南。如果您的构建项目引用存储在 Secrets Manager 中的密钥,则构建项目的服务角色必须允许
secretsmanager:GetSecretValue
行动。如果您之前选择了 New service role (新建服务角色),CodeBuild 将在您的构建项目的默认服务角色中包含此操作。但是,如果您选择了 Existing service role (现有服务角色),必须单独将此操作添加到您的服务角色中。如果您的构建项目引用存储在 Secrets Manager 中的密钥,且密钥名称不是以开头的
/CodeBuild/
,然后你选择了新的服务角色,则必须更新服务角色以允许访问不以开头的机密名称/CodeBuild/
。这是因为服务角色仅允许访问以开头的机密名称/CodeBuild/
。如果你选择新的服务角色,服务角色包括解密以下所有机密的权限
/CodeBuild/
密钥管理器中的命名空间。 -
构建规范
在构建规范部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性:
- 构建规范
-
请执行下列操作之一:
-
如果您的源代码包括生成规范文件,请选择 Use a buildspec file (使用 buildspec 文件)。默认情况下,CodeBuild 在源代码根目录中查找名为
buildspec.yml
的文件。如果您的 buildspec 文件使用不同的名称或位置,请在中输入其从源根目录开始的路径构建规范名称(例如,buildspec-two.yml
要么configuration/buildspec.yml
。 如果 buildspec 文件位于 S3 存储桶中,则它必须位于同一存储桶中Amazon区域作为您的构建项目。 使用编译规格文件的 ARN 指定该文件(例如arn:aws:s3:::
)。<my-codebuild-sample2>
/buildspec.yml -
如果您的源代码不包括构建规范文件,或者如果您要从在源代码根目录的
buildspec.yml
文件中为build
阶段指定的一个构建规范文件中运行构建命令,则选择 Insert build commands (插入构建命令)。对于 Build commands (构建命令),请输入您要在build
阶段运行的命令。对于多个命令,使用&&
分开各个命令 (例如mvn test && mvn package
)。要在其他阶段运行命令,或者如果你的命令列表很长build
阶段,添加一个buildspec.yml
文件到源代码根目录,将命令添加到文件中,然后选择在源代码根目录中使用 buildspec.yml。
有关更多信息,请参阅 构建规范参考。
-
批量配置
在批量配置部分,选择编辑。更改完成后,选择更新配置保存新配置。有关更多信息,请参阅批量构建Amazon CodeBuild:
您可以修改以下属性:
- 批处理服务角色
-
为批量生成提供服务角色。
选择以下选项之一:
-
如果您没有批处理服务角色,请选择新的服务角色。在服务角色,输入新角色的名称。
-
如果您有批处理服务角色,请选择现有服务角色。在服务角色,选择服务角色。
批量生成在批处理配置中引入了新的安全角色。这个新角色是必需的,因为CodeBuild必须能够拨打
StartBuild
,StopBuild
,以及RetryBuild
代表您执行将生成作为批处理一部分运行的操作。客户应该使用新角色,而不是他们在构建中使用的角色,原因有两个:-
赋予构建角色
StartBuild
,StopBuild
,以及RetryBuild
权限将允许单个版本通过 buildspec 启动更多构建。 -
CodeBuild批处理生成提供了限制,限制了可用于批次构建的生成数量和计算类型。如果构建角色具有这些权限,则构建本身就有可能绕过这些限制。
-
- 批处理允许的计算类型
-
选择批次允许的计算类型。选择所有适用的选项。
- 批处理中允许的最大生成次数
-
输入批次中允许的最大生成次数。如果批次超过此限制,则该批次将失败。
- 批处理超时
-
输入完成批处理生成的最长时间。
- 合并文物
-
选择将批处理中的所有工件合并到一个位置将批次中的所有工件合并到一个位置。
- 批量报告模式
-
为批量生成选择所需的构建状态报告模式。
注意
只有当项目来源为 Bitbucket 时,此字段才可用,GitHub,或GitHub企业,以及当您的构建开始和完成时,向源提供商报告构建状态在下方选择来源。
- 聚合构建
-
选择将批次中所有版本的状态合并到一个状态报告中。
- 个人构建
-
选择单独报告批次中所有版本的生成状态。
Artifacts
在神器部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性:
- Type
-
请执行下列操作之一:
-
如果您不想创建任何构建输出构件,请选择 No artifacts (无构件)。如果您只在运行构建测试或者想要将 Docker 映像推送到 Amazon ECR 存储库,则可能需要这样做。
-
要将生成输出存储在 S3 存储桶中,请选择亚马逊 S3,然后执行以下操作:
-
如果要将项目名称用于构建输出 ZIP 文件或文件夹,请将 Name (名称) 留空。否则,请输入名称。(如果您要输出 ZIP 文件,并且要让 ZIP 文件包含文件扩展名,请务必在 ZIP 文件名之后添加扩展名。)
-
如果希望构建规范文件中指定的名称覆盖控制台中指定的任何名称,请选择 Enable semantic versioning (启用语义版本控制)。构建规范文件中的名称是构建时计算得出的,使用 Shell 命令语言。例如,您可以将日期和时间附加到您的项目名称后面,以便它始终是唯一的。构件名称唯一防止覆盖构件。有关更多信息,请参阅构建规范语法:
-
对于 Bucket name (存储桶名称),请选择输出存储桶的名称。
-
如果您在此过程的前面部分选择了 Insert build commands (插入构建命令),那么对于 Output files (输出文件),请输入构建(该构建要放到构建输出 ZIP 文件或文件夹中)中的文件位置。对于多个位置,使用逗号分开各个位置 (
appspec.yml, target/my-app.jar
)。有关更多信息,请参阅 构建规范语法 中files
的描述。 -
如果不想加密构建构件,请选择 Remove artifacts encryption (删除构件加密)。
-
对于所需的每个辅助构件集:
-
对于 Artifact identifier (构件标识符),输入少于 128 个字符且仅包含字母数字字符和下划线的值。
-
选择 Add artifact (添加构件)。
-
按照前面步骤的说明配置辅助构件。
-
选择 Save artifact (保存构件)。
-
- 其他配置
-
- 加密密钥
-
请执行下列操作之一:
-
要使用Amazon 托管式密钥您的账户中的 Amazon S3 要加密构建输出项目,请离开加密密钥空白。这是默认模式。
-
要使用客户管理的密钥对构建输出项目进行加密,请在加密密钥,输入客户托管密钥的 ARN。采用格式
arn:aws:kms:
。region-ID
:account-ID
:key/key-ID
-
- 缓存类型
-
对于 Cache type (缓存类型),请选择下列选项之一:
-
如果您不想使用缓存,请选择 No cache (无缓存)。
-
如果您想使用亚马逊 S3 缓存,请选择亚马逊 S3,然后执行以下操作:
-
对于 Bucket (存储桶),选择存储缓存的 S3 存储桶的名称。
-
(可选)对于缓存路径前缀,输入亚马逊 S3 路径前缀。Cache path prefix (缓存路径前缀)值类似于目录名称。它使您能够在存储桶的同一目录下存储缓存。
重要
请勿将一个尾斜杆 (/) 附加到路径前缀后面。
-
-
如果想要使用本地缓存,请选择 Local (本地),然后选择一个或多个本地缓存模式。
注意
Docker 层缓存模式仅适用于 Linux。如果您选择该模式,您的项目必须在特权模式下运行。
使用缓存可节省大量构建时间,因为构建环境的可重用部分被存储在缓存中,并且可跨构建使用。有关在构建规范文件中指定缓存的信息,请参阅构建规范语法。有关缓存的更多信息,请参阅在 Amazon CodeBuild 中构建缓存。
-
日志
在日志部分,选择编辑。更改完成后,选择更新配置保存新配置。
您可以修改以下属性:
选择要创建的日志。你可以创建亚马逊CloudWatch日志、亚马逊 S3 日志,或两者兼而有之。
- CloudWatch
-
如果你想要亚马逊CloudWatch日志日志:
- CloudWatch 日志
-
选择 CloudWatch logs (CloudWatch 日志)。
- Group name
-
输入您的亚马逊名称CloudWatch日志日志组。
- 直播名称
-
输入您的亚马逊CloudWatch日志日志流名称。
- S3
-
如果你想要 Amazon S3 日志:
- S3 日志
-
选择 S3 logs (S3 日志)。
- 桶
-
为您的日志选择 S3 存储桶的名称。
- 路径前缀
-
输入日志的前缀。
- 禁用 S3 日志加密
-
如果您不想加密 S3 日志,请选择此选项。