AWS CodeBuild
用户指南 (API 版本 2016-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

更改 CodeBuild 中构建项目的设置

您可以使用 AWS CodeBuild 控制台、AWS CLI 或 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 (编辑),然后在 Description (描述) 中输入描述。

    选择 Update configuration (更新配置)

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

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

    注意

    CodeBuild 不支持 Bitbucket 服务器。

    源提供商 Amazon S3 CodeCommit Bitbucket GitHub GitHub Enterprise

    对于 Bucket (存储桶),选择包含源代码的输入存储桶的名称。

    X

    对于 S3 object key or S3 folder (S3 对象键或 S3 文件夹),输入 ZIP 文件的名称或包含源代码的文件夹的路径。

    X

    选择 Connect using OAuth (使用 OAuth 进行连接)Connect with a Bitbucket app password (使用 Bitbucket 应用程序密码进行连接) 并按照说明与 Bitbucket 连接或重新连接。

    X

    选择 Connect using OAuth (使用 OAuth 进行连接)Connect with a GitHub personal access token (使用 GitHub 个人访问令牌进行连接) 并按照说明与 GitHub 连接(或重新连接)且授予对 AWS CodeBuild 的访问权限。

    X

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

    注意

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

    X

    Repository (存储库) 中,选择要使用的存储库。

    X

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

    X

    对于 Repository (存储库),选择是使用公共存储库还是您账户中的存储库。

    X X

    仅当您使用公共存储库时才使用 Repository URL (存储库 URL)。输入其 URL。URL 必须包含源提供商的名称。例如,Bitbucket URL 必须包含“bitbucket.org”。

    X X

    如果您的源提供商是 Amazon S3,对于 Source version (源版本),请输入代表您输入文件构建的对象的版本 ID。如果您的源提供商是 GitHub 或 GitHub Enterprise,请输入拉取请求、分支、提交 ID、标签或参考和提交 ID。如果您的源提供商是 Bitbucket,请输入分支、提交 ID、标签或参考和提交 ID。有关更多信息,请参阅 使用 CodeBuild 的源版本示例

    X X X X

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

    X X X X

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

    X X X X

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

    注意

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

    X X X

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

    X X X

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

    X X X

    如果您选择了 Webhook,并且您希望 GitHub 在每次代码更改触发了构建时轮换私有密钥,请选择 Rotate webhook secret key (轮换 Webhook 私有密钥)

    X X

    选择 Insecure SSL (不安全的 SSL),在连接到您的 GitHub Enterprise 项目存储库时忽略 SSL 警告。

    X

    要更改 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 image (映像))进行适当的更改。

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

    - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay& - 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. 要更改有关 VPC 的信息,请在 Additional configuration (其他配置) 中,更改 VPCSubnets (子网)Security groups (安全组) 的值。

  11. 要更改用于运行生成的内存量和 vCPU 量,请在 Additional configuration (其他配置) 中,更改 Compute (计算) 的值。

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

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

    我们建议您将具有敏感值 (例如 AWS 访问密钥 ID、AWS 秘密访问密钥或密码) 的环境变量作为参数存储在 Amazon EC2 Systems Manager Parameter Store 中。对于 Type,选择 Parameter Store。对于 Name (名称),输入标识符供 CodeBuild 引用。对于 Value (值),按照 Amazon EC2 Systems Manager Parameter Store 中存储的参数名称输入参数名称。使用名为 /CodeBuild/dockerLoginPassword 的参数作为示例,对于 Type,选择 Parameter Store。对于 Name (名称),输入 LOGIN_PASSWORD。对于 Value (值),输入 /CodeBuild/dockerLoginPassword

    重要

    我们建议您将名称以 /CodeBuild/ 开头的参数(例如,/CodeBuild/dockerLoginPassword)存储在 Amazon EC2 Systems Manager Parameter Store 中。可以使用 CodeBuild 控制台在 Amazon EC2 Systems Manager 中创建参数。选择 Create a parameter (创建参数),然后按照说明操作。(在该对话框中,对于KMS key (KMS 密钥),您可以选择指定您的账户中的 AWS KMS 密钥的 ARN。Amazon EC2 Systems Manager 使用此密钥在存储过程中加密参数的值并在检索过程中解密参数的值。) 如果您使用 CodeBuild 控制台创建了一个参数,控制台将在参数名称被存储时以 /CodeBuild/ 作为它的开头。有关更多信息,请参阅 Amazon EC2 Systems Manager 用户指南中的 Systems Manager Parameter StoreSystems Manager Parameter Store 控制台演练

    如果您的构建项目引用了 Amazon EC2 Systems Manager Parameter Store 中存储的参数,则构建项目的服务角色必须允许 ssm:GetParameters 操作。如果您之前选择了 Create a service role in your account (在账户中创建服务角色),则 CodeBuild 将自动在您的构建项目的默认服务角色中包含此操作。但是,如果您选择了 Choose an existing service role from your account,则必须将此操作单独包含在您的服务角色中。

    如果您的构建项目引用了 Amazon EC2 Systems Manager Parameter Store 中存储的名称不以 /CodeBuild/ 开头的参数,且您选择了 Create a service role in your account (在账户中创建服务角色),则您必须更新该服务角色以允许访问不以 /CodeBuild/ 开头的参数名称。这是因为该服务角色仅允许访问以 /CodeBuild/ 开头的参数名称。

    如果您选择 Create a service role in your account (在账户中创建服务角色),创建的服务角色将包含解密 Amazon EC2 Systems Manager Parameter Store 中的 /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_ 打头的名称设置任何环境变量。此前缀是专为内部使用预留的。

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

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

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

    • 构建规范声明中的值优先级最低。

  13. 要更改有关此构建项目标签的信息,请在 Additional configuration (其他配置) 中,对于 Tags (标签),更改 Name (名称)Value (值) 的值。使用 Add row 添加标签。您最多可以添加 50 个标签。选择您不想再使用的标签旁边的删除 (X) 图标。

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

  15. 要更改项目的生成规范,请在 Buildspec (生成规范) 中选择 Edit (编辑)

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

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

  16. 选择 Update buildspec (更新生成规范)

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

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

    重要

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

  19. 要更改有关缓存的信息,请展开 Additional configuration (其他配置)。在 Cache type (缓存类型) 中,执行下列操作之一:

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

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

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

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

        重要

        请不要在 Path prefix 的末尾附加“/”。

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

  20. 要更改您的日志设置,请在 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 日志加密)

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

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

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

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

有关将 AWS CLI 与 AWS CodeBuild 结合使用的更多信息,请参阅命令行参考

  1. 运行 update-project 命令,如下所示:

    aws codebuild update-project --generate-cli-skeleton

    输出中将显示 JSON 格式的数据。将数据复制到本地计算机上或安装 AWS CLI 的实例上某位置处的文件(如 update-project.json)中。然后按照 创建构建项目 (AWS CLI) 中的说明修改复制的数据,并保存您的结果。

    注意

    在 JSON 格式的数据中,您必须提供生成项目的名称。所有其他设置都是可选的。您无法更改构建项目的名称,但可以更改它的任何其他设置。

  2. 切换到包含您刚才保存的文件的目录,然后再次运行 update-project 命令。

    aws codebuild update-project --cli-input-json file://update-project.json
  3. 如果成功,与创建构建项目 (AWS CLI) 中所述内容类似的数据将出现在输出中。

更改构建项目的设置 (AWS 开发工具包)

有关将 AWS CodeBuild 与 AWS 开发工具包结合使用的信息,请参阅AWS 开发工具包和工具参考