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

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

运行构建 (Amazon CLI)

注意

CodePipeline 要使用运行构建 Amazon CodeBuild,请跳过这些步骤并按照中的说明进行操作创建使用 CodeBuild 的管道 (Amazon CLI)

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

  1. 使用以下方法之一运行 start-build 命令:

    aws codebuild start-build --project-name <project-name>

    如果您要运行的构建项目使用的是最新版本的构建输入项目和构建项目现有设置,请使用此方法。

    aws codebuild start-build --generate-cli-skeleton

    如果您要运行的构建具有早期版本的构建输入项目,或者如果您要覆盖构建输出项目、环境变量、构建规范或默认构建超时期限的设置,请使用此方法。

  2. 如果运行带--project-name选项的start-build命令,请替换<project-name>为生成项目的名称,然后跳到此过程的第 6 步。要获取构建项目的列表,请参阅查看构建项目名称

  3. 如果您运行带 --idempotency-token 选项的 start-build 命令,则 start-build 请求将附带区分大小写的唯一标识符或令牌。令牌在发出请求后的 5 分钟内有效。如果您使用相同的令牌重复start-build请求,但更改了参数,则 CodeBuild 会返回参数不匹配错误。

  4. 如果您运行具有 --generate-cli-skeleton 选项的 start-build 命令,则采用 JSON 格式的数据将出现在输出中。将数据复制到安装的本地计算机或实例上某个位置的文件(例如start-build.json)。 Amazon CLI 修改所复制的数据,使其符合以下格式,然后保存结果:

    { "projectName": "projectName", "sourceVersion": "sourceVersion", "artifactsOverride": { "type": "type", "location": "location", "path": "path", "namespaceType": "namespaceType", "name": "artifactsOverride-name", "packaging": "packaging" }, "buildspecOverride": "buildspecOverride", "cacheOverride": { "location": "cacheOverride-location", "type": "cacheOverride-type" }, "certificateOverride": "certificateOverride", "computeTypeOverride": "computeTypeOverride", "environmentTypeOverride": "environmentTypeOverride", "environmentVariablesOverride": { "name": "environmentVariablesOverride-name", "value": "environmentVariablesValue", "type": "environmentVariablesOverride-type" }, "gitCloneDepthOverride": "gitCloneDepthOverride", "imageOverride": "imageOverride", "idempotencyToken": "idempotencyToken", "insecureSslOverride": "insecureSslOverride", "privilegedModeOverride": "privilegedModeOverride", "queuedTimeoutInMinutesOverride": "queuedTimeoutInMinutesOverride", "reportBuildStatusOverride": "reportBuildStatusOverride", "timeoutInMinutesOverride": "timeoutInMinutesOverride", "sourceAuthOverride": "sourceAuthOverride", "sourceLocationOverride": "sourceLocationOverride", "serviceRoleOverride": "serviceRoleOverride", "sourceTypeOverride": "sourceTypeOverride" }

    替换以下占位符:

    • projectName: 必填字符串。用于此构建项目的构建项目名称。

    • sourceVersion: 可选字符串。要构建的源代码版本,如下所示:

      • 对于 Amazon S3,与您需要构建的输入 ZIP 文件的版本相对应的版本 ID。如果sourceVersion未指定,则使用最新版本。

      • 对于 CodeCommit,与您要构建的源代码版本相对应的提交 ID。如果未指定,sourceVersion则使用默认分支的 HEAD 提交 ID。(您不能为指定标签名称sourceVersion,但可以指定标签的提交 ID。)

      • 对于 GitHub,与您要构建的源代码版本相对应的提交 ID、拉取请求 ID、分支名称或标签名称。如果指定了拉取请求 ID,则必须使用格式 pr/pull-request-ID(例如,pr/25)。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。如果未指定,sourceVersion则使用默认分支的 HEAD 提交 ID。

      • 对于 Bitbucket,为提交 ID、分支名称或与您要构建的源代码版本相对应的标签名称。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。如果未指定,sourceVersion则使用默认分支的 HEAD 提交 ID。

    • 以下占位符适用于 artifactsOverride

      • type:可选。构建项目中定义覆盖此构建项目的构建输出项目类型。

      • location:可选。构建项目中定义覆盖此构建项目的构建输出项目位置。

      • path:可选。构建项目中定义覆盖此构建项目的构建输出项目路径。

      • namespaceType:可选。构建项目中定义覆盖此构建项目的构建输出项目路径类型。

      • name:可选。构建项目中定义覆盖此构建项目的构建输出项目名称。

      • packaging:可选。构建项目中定义覆盖此构建项目的构建输出项目打包类型。

    • buildspecOverride:可选。构建项目中定义覆盖此构建项目的构建规范声明。如果设置了该值,则它可以是内联构建规范定义,也可以是指向相对于内置 CODEBUILD_SRC_DIR 环境变量的值的替代构建规范文件的路径,或者是指向 S3 存储桶的路径。S3 存储桶必须与构建项目位于同一 Amazon 区域中。使用其 ARN 指定 buildspec 文件(例如,arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。如果此值未提供或设置为空字符串,源代码必须在其根目录中包含 buildspec.yml 文件。有关更多信息,请参阅 buildspec 文件名称和存储位置

    • 以下占位符适用于 cacheOverride

      • cacheOverride-location:可选。此构建的 ProjectCache 对象的位置,该对象将覆盖构建项目中指定的 ProjectCache 对象。cacheOverride 是可选的,它采用 ProjectCache 对象。locationProjectCache 对象中是必需的。

      • cacheOverride-type:可选。此构建的 ProjectCache 对象的类型,该对象将覆盖构建项目中指定的 ProjectCache 对象。cacheOverride 是可选的,它采用 ProjectCache 对象。typeProjectCache 对象中是必需的。

    • certificateOverride:可选。此构建的证书的名称,该证书将覆盖构建项目中指定的证书。

    • environmentTypeOverride:可选。此构建的容器类型,该容器类型将覆盖构建项目中指定的容器类型。当前的有效字符串为 LINUX_CONTAINER

    • 以下占位符适用于 environmentVariablesOverride

      • environmentVariablesOverride-name:可选。构建项目中的环境变量名称,其值将会覆盖此构建项目中的相应值。

      • environmentVariablesOverride-type:可选。构建项目中的环境变量类型,其值将会覆盖此构建项目中的相应值。

      • environmentVariablesValue:可选。构建项目中定义的环境变量值,其值将会覆盖此构建项目中的相应值。

    • gitCloneDepthOverride:可选。构建项目中 Git 克隆深度的值,您希望此构建项目会覆盖其值。如果您的源类型是 Amazon S3,则不支持此值。

    • imageOverride:可选。此构建的映像的名称,该映像将覆盖构建项目中指定的映像。

    • idempotencyToken:可选。一个字符串,该字符串用作令牌来指定构建请求是幂等的。您可以选择任何包含 64 个或更少字符的字符串。令牌在发出 start-build 请求后的 5 分钟内有效。如果您使用相同的令牌重复启动构建请求,但更改了参数,则会 CodeBuild 返回参数不匹配错误。

    • insecureSslOverride:可选布尔值,用于指定是否覆盖构建项目中指定的不安全 TLS 设置。不安全的 TLS 设置确定是否忽略 TLS 警告,并连接到项目源代码。仅当版本源为 GitHub 企业服务器时,此覆盖才适用。

    • privilegedModeOverride: 可选的布尔值。如果设置为 true,则构建将覆盖构建项目中的特权模式。

    • queuedTimeoutInMinutesOverride:可选的整数,用于指定版本在超时之前允许排队的分钟数。最小值为 5 分钟,最大值为 480 分钟(8 个小时)。

    • reportBuildStatusOverride:可选的布尔值,用于指定是否向源提供商发送编译开始和完成的状态。如果您使用除 GitHub 企业服务器或 Bitbucket 之外的 GitHub源提供商进行此设置, invalidInputException 则会抛出。

    • sourceAuthOverride: 可选字符串。此构建的授权类型,该授权类型将覆盖构建项目中定义的授权类型。仅当构建项目的源代码为 Bitbucket 或 GitHub时,此覆盖才适用。

    • sourceLocationOverride: 可选字符串。此构建的源位置,该源位置将覆盖构建项目中定义的源位置。

    • serviceRoleOverride: 可选字符串。此构建的服务角色的名称,该角色将覆盖构建项目中指定的角色。

    • sourceTypeOverride: 可选字符串。此构建的源输入类型,该源输入将覆盖构建项目中定义的源输入。有效字符串包括:NO_SOURCECODECOMMITCODEPIPELINEGITHUBS3BITBUCKETGITHUB_ENTERPRISE

    • timeoutInMinutesOverride: 可选数字。构建项目中定义覆盖此构建项目的构建超时分钟数。

    我们建议您将具有敏感值的环境变量(例如访问密钥 ID、私有 Amazon 访问 Amazon 密钥或密码)作为参数存储在 Amazon Sy EC2 stems Manager Parameter Store 中。 CodeBuild 只有当参数名称以/CodeBuild/(例如/CodeBuild/dockerLoginPassword)开头时,才能使用存储在 Amazon Sy EC2 stems Manager 参数存储中的参数。您可以使用 CodeBuild 控制台在 Amazon S EC2 ystems Manager 中创建参数。选择创建参数,然后按照说明操作。(在该对话框中,对于 KMS 密钥,您可以选择指定账户中 Amazon KMS 密钥的 ARN。 Amazon Sy EC2 stems Manager 使用此密钥在存储期间加密参数的值,并在检索期间解密。) 如果您使用 CodeBuild 控制台创建参数,则控制台会以存储参数时/CodeBuild/作为参数的开头。但是,如果您使用 Amazon S EC2 ystems Manager Parameter Store 控制台创建参数,则参数名称必须以开头/CodeBuild/,并且必须将类型设置为安全字符串。有关更多信息,请参阅 Amazon Syst EC2 ems Manager 用户指南中的Amazon Systems Manager 参数存储和演练:创建和测试字符串参数(控制台)

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

    您设置的环境变量将替换现有的环境变量。例如,如果 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_ 打头的名称设置任何环境变量。此前缀是专为内部使用预留的。

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

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

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

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

    有关这些占位符的有效值的信息,请参阅创建构建项目 (Amazon CLI)。有关构建项目的最新设置列表,请参阅查看构建项目详细信息

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

    aws codebuild start-build --cli-input-json file://start-build.json
  6. 如果成功,与运行构建 过程中所述内容类似的数据将出现在输出中。

要了解有关此构建项目的详细信息,请记下输出中的 id 值,然后查看查看构建详细信息(Amazon CLI)