更改构建项目的设置(控制台) - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

  1. Open the AWS CodeBuild console at https://console.amazonaws.cn/codesuite/codebuild/home.

  2. 在导航窗格中,选择 Build projects

  3. 执行下列操作之一:

    • 选择要更改的生成项目的链接,然后选择 Build details (生成详细信息)

    • 选择要更改的生成项目旁边的按钮,选择 View details (查看详细信息),然后选择 Build details (生成详细信息)

  4. 要更改项目的描述,请在 Project configuration (项目配置) 中选择 Edit (编辑),然后输入描述。

    选择 Update configuration (更新配置)

    有关此过程中引用的设置的更多信息,请参阅创建构建项目 (控制台)

  5. 要更改有关源代码位置的信息,请在 Source (源) 中选择 Edit (编辑)。使用以下列表为您的源提供商选择适当的选择,然后选择 Update source (更新源)

    注意

    CodeBuild does not support Bitbucket Server.

    Amazon S3
    Bucket

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

    S3 对象键或 S3 文件夹

    输入 ZIP 文件的名称或包含源代码的文件夹的路径。

    源版本

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

    CodeCommit
    Repository

    选择要使用的存储库。

    参考类型

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

    Git clone 深度

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

    使用 Git 子模块

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

    Bitbucket
    Repository

    选择使用 OAuth 连接使用 Bitbucket 应用程序密码连接 并按照说明连接到 Bitbucket。

    选择您账户中的公有 存储库或 存储库。

    源版本

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

    Git clone 深度

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

    使用 Git 子模块

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

    如果您希望向源提供商报告构建的开始和完成状态,请选择 Report build status to source provider when your builds start and finish

    注意

    由 Webhook 触发的构建的状态将始终报告给您的源提供商。

    如果您希望 每次将代码更改推送到此存储库时都构建源代码,请选择 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建)CodeBuild。Webhook 仅允许在您自己的 Bitbucket、GitHub 或 GitHub Enterprise 存储库中使用。

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

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

    如果您选择了 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建),则在 Event type (事件类型) 中,选择要触发构建的事件。使用正则表达式创建筛选条件。如果未指定筛选条件,则所有更新和创建拉取请求及所有推送事件都会触发构建。有关更多信息,请参阅 GitHub Webhook 事件Bitbucket Webhook 事件

    GitHub
    Repository

    选择使用 OAuth 连接使用 GitHub 个人访问令牌连接,然后按照说明连接到(或重新连接) GitHub 并授权访问 AWS CodeBuild。

    选择您账户中的公有 存储库或 存储库。

    源版本

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

    Git clone 深度

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

    使用 Git 子模块

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

    如果您希望向源提供商报告构建的开始和完成状态,请选择 Report build status to source provider when your builds start and finish

    注意

    由 Webhook 触发的构建的状态将始终报告给您的源提供商。

    如果您希望 在每次将代码更改推送到此存储库时构建源代码,请选择 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建)CodeBuild。Webhook 仅适用于您自己的 Bitbucket、GitHub 或 GitHub Enterprise 存储库。

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

    对于 Target URL (目标 URL),输入要用于 target_url 提交状态中的 GitHub 参数的值。有关更多信息,请参阅 开发人员指南中的创建提交状态GitHub。

    如果您选择了 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建),则在 Event type (事件类型) 中,选择要触发构建的事件。使用正则表达式创建筛选条件。如果未指定筛选条件,则所有更新和创建拉取请求及所有推送事件都会触发构建。有关更多信息,请参阅 GitHub Webhook 事件Bitbucket Webhook 事件

    GitHub Enterprise Server
    GitHub 企业个人访问令牌

    有关如何将个人访问令牌复制到剪贴板的信息,请参阅GitHub Enterprise Server 示例。在文本字段中粘贴令牌,然后选择 Save Token (保存令牌)

    注意

    您只需输入并保存一次个人访问令牌。CodeBuild 将在所有未来项目中使用此令牌。

    源版本

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

    Git clone 深度

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

    使用 Git 子模块

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

    生成包状态

    如果您希望向源提供商报告构建的开始和完成状态,请选择 Report build status to source provider when your builds start and finish

    注意

    由 Webhook 触发的构建的状态将始终报告给您的源提供商。

    不安全的 SSL

    选择在连接到您的 GitHub Enterprise 项目存储库时忽略 SSL 警告。

    如果您希望 在每次将代码更改推送到此存储库时构建源代码,请选择 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建)CodeBuild。Webhook 仅适用于您自己的 Bitbucket、GitHub 或 GitHub Enterprise 存储库。

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

    对于 Target URL (目标 URL),输入要用于 target_url 提交状态中的 GitHub 参数的值。有关更多信息,请参阅《 开发人员指南》中的创建提交状态GitHub。

    如果您选择了 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新构建),则在 Event type (事件类型) 中,选择要触发构建的事件。使用正则表达式创建筛选条件。如果未指定筛选条件,则所有更新和创建拉取请求及所有推送事件都会触发构建。有关更多信息,请参阅 GitHub Webhook 事件Bitbucket Webhook 事件

    要更改 CodeBuild 是否可以修改您用于此项目的服务角色,请选中或清除 Allow AWS CodeBuild to modify this service role so it can be used with this build project (允许 AWS CodeBuild 修改此服务角色,以便它可以用于此构建项目)。如果清除该复选框,则必须使用附加有 CodeBuild 权限的服务角色。有关更多信息,请参阅 向 IAM 组或 IAM 用户添加 CodeBuild 访问权限创建 CodeBuild 服务角色

  6. 要更改有关构建环境的信息,请在 Environment (环境) 中选择 Edit (编辑)。对构建环境类型(例如,Environment image (环境映像)Operating system (操作系统)Runtime (运行时)Runtime version (运行时版本)Custom image (自定义映像)Other location (其他位置)Amazon ECR repository (Amazon ECR 存储库)Amazon ECR image (Amazon ECR 映像))进行适当的更改。

  7. 如果您计划使用此构建项目来构建 Docker 映像且指定的构建环境不是由具有 Docker 支持的 CodeBuild 提供,请选择 Privileged (特权)。否则,尝试与 Docker 守护程序交互的所有关联的构建都将失败。您还必须启动 Docker 守护程序,以便您的构建可根据需要与之交互。要这样做,您可以通过运行以下构建命令,在您构建规范文件的 install 阶段初始化 Docker 守护程序。(如果指定的构建环境映像由具有 Docker 支持的 CodeBuild 提供,请不要运行以下构建命令。)

    注意

    By default, Docker containers do not allow access to any devices. Privileged mode grants a build project's Docker container access to all devices. For more information, see Runtime Privilege and Linux Capabilities on the Docker Docs website.

    - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
  8. 要更改有关 CodeBuild 服务角色的信息,请在 Service role (服务角色) 中更改 New service role (新服务角色)Existing service role (现有服务角色)Role name (角色名称) 的值。

    注意

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

  9. 要更改有关生成超时的信息,请在 Additional configuration (其他配置) 中,对于 Timeout (超时),更改 hours (小时)minutes (分钟) 的值。如果 hoursminutes 都留空,则默认值为 60 分钟。

  10. 要更改有关您在 Amazon VPC 中创建的 VPC 的信息,请在 Additional configuration (其他配置) 中更改 VPCSubnets (子网)Security groups (安全组) 的值。

  11. 要更改有关您在 Amazon EFS 中创建的文件系统的信息,请在 Additional configuration (其他配置) 中更改其 Identifier (标识符)IDDirectory path (目录路径)Mount point (挂载点)Mount options (挂载选项) 的值。有关更多信息,请参阅 适用于 AWS CodeBuild 的 Amazon Elastic File System 示例

  12. 要更改用于运行构建的内存量和 vCPUs,请在 Additional configuration (其他配置) 中,更改 Compute (计算) 的值。

  13. 要更改有关您希望构建使用的环境变量的信息,请在 Additional configuration (其他配置) 中,对于 Environment variables (环境变量),更改 Name (名称)Value (值)Type (类型) 的值。使用 Add environment variable (添加环境变量) 添加环境变量。选择您不再想使用的环境变量旁边的 Remove (删除)

    其他人可以使用 CodeBuild 控制台和 AWS CLI 查看环境变量。如果您不担心环境变量的可见性,请设置 NameValue 字段,然后将 Type 设置为 Plaintext

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

    如果您使用的是 Amazon EC2 Systems Manager Parameter Store,则对于 Type (类型),选择 Parameter (参数)。对于 Name (名称),输入标识符供 CodeBuild 引用。对于 Value (值),按照 Amazon EC2 Systems Manager Parameter Store 中存储的参数名称输入参数名称。使用名为 /CodeBuild/dockerLoginPassword 的参数作为示例,对于 Type (类型),选择 Parameter (参数)。对于 Name (名称),输入 LOGIN_PASSWORD。 对于 Value (值),键入 /CodeBuild/dockerLoginPassword

    重要

    If you use Amazon EC2 Systems Manager Parameter Store, we recommend that you store parameters with parameter names that start with /CodeBuild/ (for example, /CodeBuild/dockerLoginPassword). You can use the CodeBuild console to create a parameter in Amazon EC2 Systems Manager. Choose Create parameter, and then follow the instructions in the dialog box. (In that dialog box, for KMS key, you can specify the ARN of an AWS KMS key in your account. Amazon EC2 Systems Manager uses this key to encrypt the parameter's value during storage and decrypt it during retrieval.) If you use the CodeBuild console to create a parameter, the console starts the parameter name with /CodeBuild/ as it is being stored. For more information, see Systems Manager Parameter Store and Systems Manager Parameter Store Console Walkthrough in the Amazon EC2 Systems Manager User Guide.

    If your build project refers to parameters stored in Amazon EC2 Systems Manager Parameter Store, the build project's service role must allow the ssm:GetParameters action. If you chose New service role earlier, CodeBuild includes this action in the default service role for your build project. However, if you chose Existing service role, you must include this action to your service role separately.

    If your build project refers to parameters stored in Amazon EC2 Systems Manager Parameter Store with parameter names that do not start with /CodeBuild/, and you chose New service role, you must update that service role to allow access to parameter names that do not start with /CodeBuild/. This is because that service role allows access only to parameter names that start with /CodeBuild/.

    If you choose New service role, the service role includes permission to decrypt all parameters under the /CodeBuild/ namespace in the Amazon EC2 Systems Manager Parameter Store.

    Environment variables you set replace existing environment variables. For example, if the Docker image already contains an environment variable named MY_VAR with a value of my_value, and you set an environment variable named MY_VAR with a value of other_value, then my_value is replaced by other_value. Similarly, if the Docker image already contains an environment variable named PATH with a value of /usr/local/sbin:/usr/local/bin, and you set an environment variable named PATH with a value of $PATH:/usr/share/ant/bin, then /usr/local/sbin:/usr/local/bin is replaced by the literal value $PATH:/usr/share/ant/bin.

    Do not set any environment variable with a name that begins with CODEBUILD_. This prefix is reserved for internal use.

    If an environment variable with the same name is defined in multiple places, the value is determined as follows:

    • The value in the start build operation call takes highest precedence.

    • The value in the build project definition takes next precedence.

    • The value in the buildspec declaration takes lowest precedence.

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

    重要

    If you use Secrets Manager, we recommend that you store secrets with names that start with /CodeBuild/ (for example, /CodeBuild/dockerLoginPassword). For more information, see What Is AWS Secrets Manager? in the AWS Secrets Manager User Guide.

    If your build project refers to secrets stored in Secrets Manager, the build project's service role must allow the secretsmanager:GetSecretValue action. If you chose New service role earlier, CodeBuild includes this action in the default service role for your build project. However, if you chose Existing service role, you must include this action to your service role separately.

    If your build project refers to secrets stored in Secrets Manager with secret names that do not start with /CodeBuild/, and you chose New service role, you must update the service role to allow access to secret names that do not start with /CodeBuild/. This is because the service role allows access only to secret names that start with /CodeBuild/.

    If you choose New service role, the service role includes permission to decrypt all secrets under the /CodeBuild/ namespace in the Secrets Manager.

  14. 选择 Update environment (更新环境)

  15. 要更改项目的构建规范,请在 Buildspec (构建规范) 中选择 Edit (编辑)。默认情况下,CodeBuild 在源代码根目录中查找名为 buildspec.yml 的文件。如果您的构建规范文件使用不同的名称或位置,请在 Buildspec name (构建规范名称) 中输入源根目录的路径(例如,buildspec-two.ymlconfiguration/buildspec.yml)。 如果构建规范文件位于 S3 存储桶中,则它必须与您的构建项目位于同一 AWS 区域。使用其 ARN 指定构建规范文件(例如,arn:aws:s3:::my-codebuild-sample2/buildspec.yml)。

    • 如果您的源代码以前不包含 buildspec.yml 文件,但现在却包含此文件,请选择 Use a buildspec file (使用 buildspec 文件)

    • 如果您的源代码以前包含 buildspec.yml 文件但现在不包含此文件,请选择 Insert build commands (插入构建命令),然后在 Build commands (构建命令) 中,输入命令。

  16. 选择 Update buildspec (更新构建规范)

  17. 要更改有关批处理构建配置的信息,请在 Batch configuration (批处理配置) 中选择 Edit (编辑) 并根据需要更新以下值。

    批处理服务角色

    选择以下选项之一:

    • 如果您没有批处理服务角色,请选择 New service role (新建服务角色)。在 Service role (服务角色) 中,输入新角色的名称。

    • 如果您具有批处理服务角色,请选择 Existing service role (现有服务角色)。在 Service role (服务角色) 中,选择服务角色。

    批处理构建在批处理配置中引入了新的安全角色。此新角色是必需的,因为 CodeBuild 必须能够代表您调用 StartBuildStopBuildRetryBuild 操作,才能将构建作为批处理的一部分运行。客户应使用新的角色,而不是他们在构建中使用的相同角色,有两个原因:

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

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

    批处理允许的计算类型

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

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

    输入批处理中允许的最大构建数。如果某个批次超过此限制,则该批次将失败。

    批处理超时

    输入批量生成要完成的最长时间。

    组合构件

    选择 Combine all artifacts from batch to a single location (将所有构件从批处理合并到一个位置) 以将批处理中的所有构件合并到一个位置。

  18. 选择 Update batch configuration (更新批处理配置)

  19. 要更改有关构建输出项目位置和名称的信息,请在 Artifacts (构件) 中选择 Edit (编辑),然后更改 Type (类型)Name (名称)Path (路径)Namespace type (命名空间类型)Bucket name (存储桶名称) 的值。

  20. 要更改有关 AWS KMS 客户托管密钥 (CMK) 的信息,请在 Additional configuration (其他配置) 中,更改 Encryption key (加密密钥) 的值。

    重要

    如果您将 Encryption key (加密密钥) 留空,则 CodeBuild 会将 AWS 托管 CMK 用于您 AWS 账户中的 Amazon S3。

  21. 使用缓存可节省构建时间,因为构建环境的可重用部分存储在缓存中,并且可跨构建使用。有关在生成规范文件中指定缓存的信息,请参阅构建规范语法。要更改有关缓存的信息,请展开 Additional configuration (其他配置)。在 Cache type (缓存类型) 中,执行下列操作之一:

    • 如果您之前选择了缓存但现在不想使用缓存,请选择 No cache (无缓存)

    • 如果您之前选择了 No cache (无缓存) 但现在想使用缓存,请选择 Amazon S3,然后执行以下操作:

      • 对于 Cache bucket (缓存存储桶),选择存储缓存的 S3 存储桶的名称。

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

        重要

        请不要在 Path prefix (路径前缀) 的末尾附加正斜杠 (/)。

  22. 要更改您的日志设置,请在 Logs (日志) 中选中或清除 CloudWatch logs (CloudWatch 日志)S3 logs (S3 日志)

    如果选择 CloudWatch logs (CloudWatch 日志)

    • Group name (组名称) 中,输入您的 Amazon CloudWatch Logs 组的名称。

    • Stream name (流名称) 中,输入您的 Amazon CloudWatch Logs 流名称。

    如果选择 S3 logs (S3 日志)

    • Bucket (存储桶) 中,选择您的日志的 S3 存储桶的名称。

    • Path prefix (路径前缀) 中,输入您的日志的前缀。

    • 如果您不希望加密您的 S3 日志,请选择 Remove S3 log encryption (删除 S3 日志加密)

  23. 要更改有关存储构建输出构件的方式的信息,请在 Additional configuration (其他信息) 中,更改 Artifacts packaging (构件打包) 的值。

  24. 要更改是否加密构建构件,请使用 Disable artifacts encryption (禁用构件加密)

  25. 选择 Update artifacts (更新项目)