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

运行构建(控制台)

要使用 AWS CodePipeline 运行 CodeBuild 中的构建项目,可跳过这些步骤并按照将 CodePipeline 与 CodeBuild 结合使用中的说明操作。

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

  2. 执行下列操作之一:

    • 如果您刚刚完成构建项目的创建,构建项目: project-name应显示 页面。选择 Start build

    • 如果您之前创建了构建项目,则应在导航窗格中选择 Build projects。选择构建项目,然后选择 Start build

  3. Start build (启动构建) 页面上,执行下列操作之一:

    • 对于 Amazon S3,输入要构建的输入构件版本的版本 ID 作为可选的 Source version (源版本) 值。如果 Source version (源版本) 留空,则使用最新版本。

    • 对于 CodeCommit,为 Reference type (参考类型) 选择 Branch (分支)Git tag (Git 标签)Commit ID (提交 ID)。接下来,选择分支、Git 标签,或输入提交 ID 以指定源代码的版本。有关更多信息,请参阅使用 AWS CodeBuild 的源版本示例。更改 Git clone depth 的值。这会创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择 Full (完整)

    • 对于 GitHub 或 GitHub Enterprise Server,请输入提交 ID、拉取请求 ID、分支名称或您要构建的源代码版本的标签名称作为可选 Source version (源版本) 值。如果您要指定拉取请求 ID,则必须使用格式 pr/pull-request-ID (例如,pr/25)。如果您要指定分支名称,则将使用分支的 HEAD 提交 ID。如果 Source version (源版本) 留空,则将使用默认分支的 HEAD 提交 ID。更改 Git clone depth 的值。这会创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择 Full (完整)

    • 对于 Bitbucket,请输入提交 ID、分支名称或您要生成的源代码版本的标签名称作为可选 Source version (源版本) 值。如果您要指定分支名称,则将使用分支的 HEAD 提交 ID。如果 Source version (源版本) 留空,则将使用默认分支的 HEAD 提交 ID。更改 Git clone depth 的值。这会创建一个浅克隆,其历史记录会截断至指定数量的提交。如果您需要完整克隆,请选择 Full (完整)

    • 要仅对此构建使用不同的源提供商,请选择 Advanced build options (高级构建选项)。有关源提供商选项和设置的更多信息,请参阅Choose source provider

  4. 选择 Advanced build overrides (高级构建覆盖)

    在这里,您可以仅为此构建更改设置。此部分中的设置是可选的。

    Build configuration (构建配置) 下,从以下选项中进行选择:

    单个构建

    选择此项可执行单个构建。

    批量生成

    选择此项可执行批量生成。

    Batch configuration (批处理配置) 下,为此构建设置批处理构建配置覆盖。

    注意

    仅当在 Build configuration (构建配置) 中选择 Batch build (批量构建) 时,才显示此部分。

    服务 角色

    为 批处理构建提供服务角色。选择以下选项之一:

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

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

    要更改 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 服务角色

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

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

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

    批处理允许的计算类型

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

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

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

    批处理超时

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

    组合构件

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

    Source (源) 下,您可以:

    • 选择 Add source (添加源) 以添加辅助源。

    • 选择 Remove source (删除源) 以删除辅助源。

    • 使用 Source provider (源提供商)Source version (源版本) 修改源的设置。

    Environment (环境) 下,您可以:

    • 覆盖 Environment image (环境映像)Operating system (操作系统)Runtime (运行时)Runtime version (运行时版本) 的设置。

    • 选中或清除 Privileged (特权)

      注意

      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.

    • Service role (服务角色) 中,您可以更改 CodeBuild 用来调用从属 AWS 服务的服务角色。选择 New service role (新建服务角色) 以让 CodeBuild 为您创建服务角色。

    • 选择 Override build specification (覆盖生成规范) 来使用不同的生成规范。

    • 更改 Timeout (超时) 的值。

    • 更改 Compute (计算) 的值。

    • Certificate (证书)中选择一种不同设置。

    Buildspec (生成规范) 下,您可以:

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

    • 选择 Insert build commands (插入生成命令) 以输入要在生成阶段运行的命令。

    Build Artifacts (构建构件) 下,您可以:

    • Type (类型) 中,选择不同的构件类型。

    • Name (名称) 中,键入不同的输出构件名称。

    • 如果希望构建规范文件中指定的名称覆盖控制台中指定的任何名称,请选择 Enable semantic versioning (启用语义版本控制)。构建规范文件中的名称使用 Shell 命令语言。例如,您可以将日期和时间附加到您的项目名称后面,以便它始终是唯一的。构件名称唯一防止覆盖构件。有关更多信息,请参阅构建规范语法

    • Path (路径) 中,键入不同的输出构件路径。

    • Namespace type (命名空间类型) 中,选择不同的类型。选择 Build ID (构建 ID) 将构建 ID 插入构建输出文件的路径(例如,My-Path/Build-ID/My-Artifact.zip)。否则,选择 None (无)

    • Bucket name (存储桶名称) 中,为您的输出构件选择其他 S3 存储桶。

    • 如果不想加密构建构件,请选择 Disable artifacts encryption (禁用构件加密)

    • 选择 Artifacts packaging (构件打包),然后选择 Zip 以将生成构件文件放入一个压缩文件中。要将构建构件文件分别放入指定的 S3 存储桶中(不压缩),请选择 None (无)

    • Cache (缓存) 下,从 Type (类型) 中,选择不同的缓存设置。

    • 仅覆盖此构建的辅助构件:

      • 要删除辅助构件,请在 Secondary artifacts (辅助构件) 中,选择辅助构件行中的 X

      • 要添加辅助构件,请选择 Add artifact (添加构件),然后输入辅助构件的信息。有关更多信息,请参阅创建构建项目 (控制台)中的步骤 8。

    Logs (日志) 下,您可以通过选中或清除 CloudWatch LogsS3 logs (S3 日志) 来覆盖日志设置。

    • 如果您启用 CloudWatch logs (CloudWatch 日志)

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

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

    • 如果您启用 S3 logs (S3 日志)

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

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

    Service role (服务角色) 下,您可以更改 CodeBuild 用来调用从属 AWS 服务的服务角色。选择 Create a role (创建角色),让 CodeBuild 为您创建一个服务角色。

  5. 展开 Environment variables override (环境变量覆盖)

    环境变量列表预填充了在构建项目中设置的环境变量。如果您需要更改预填充的环境变量的值 (仅针对此构建项目),请更改 Value 和/或 Type 的值。选择 Add environment variable (添加环境变量) 以仅为此构建添加新环境变量。

    注意

    Remove (删除) 按钮不能用于删除预填充的环境变量。Remove (删除) 按钮仅用于删除为此构建添加或修改的环境变量。

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

    我们建议您将具有敏感值 (例如 AWS 访问密钥 ID、AWS 秘密访问密钥或密码) 的环境变量作为参数存储在 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

    我们建议您将名称以 /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/ 作为它的开头。有关更多信息,请参阅 Systems Manager Parameter Store演练:。 用户指南 中的创建并测试字符串参数(控制台)Amazon EC2 Systems Manager。

    如果您的构建项目引用了 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/ 开头的参数名称。

    您设置的任何环境变量都将替换现有的环境变量。例如,如果 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_ 开头的任何环境变量。 此前缀保留供内部使用。

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

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

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

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

  6. 选择 Start build

    有关此构建项目的详细信息,请参阅查看构建详细信息(控制台)