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

运行构建 (AWS CLI)

注意

要使用 CodePipeline 运行 AWS CodeBuild 中的构建项目,可跳过这些步骤并按照创建使用 CodeBuild 的管道 (AWS CLI).中的说明操作。

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

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

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

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

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

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

  2. If you run the start-build command with the --project-name option, replace <project-name> with the name of the build project, and then skip to step 6 of this procedure. 要获取构建项目的列表,请参阅查看构建项目名称的列表.

  3. If you run the start-build command with the --idempotency-token option, a unique case-sensitive identifier or token, is included with the start-build request. 令牌在发出 请求后的 5 分钟内有效。如果您重复发出带相同令牌的 start-build 请求,但更改了参数,则 CodeBuild 会返回“参数不匹配”错误。

  4. 如果您运行具有 start-build 选项的 --generate-cli-skeleton 命令,则采用 JSON 格式的数据将出现在输出中。将数据复制到本地计算机上或安装 start-build.json 的实例上某位置处的文件(如 AWS 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: Required string. 用于此构建项目的构建项目名称。

    • sourceVersion: Optional string. 要构建的源代码版本,如下所示:

      • 对于 Amazon S3,与您需要构建的输入 ZIP 文件的版本相对应的版本 ID。If sourceVersion is not specified, then the latest version is used.

      • 对于 CodeCommit,与您需要构建的源代码版本相对应的提交 ID。If sourceVersion is not specified, the default branch's HEAD commit ID is used. (You cannot specify a tag name for sourceVersion, but you can specify the tag's commit ID.)

      • For GitHub, the commit ID, pull request ID, branch name, or tag name that corresponds to the version of the source code you want to build. 如果指定了拉取请求 ID,则必须使用格式 pr/pull-request-ID (例如,pr/25). 如果指定了分支名称,则将使用分支的 HEAD 提交 ID。If sourceVersion is not specified, the default branch's HEAD commit ID is used.

      • 对于 Bitbucket,指定提交 ID、分支名称或与您要构建的源代码版本相对应的标签名称。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。If sourceVersion is not specified, the default branch's HEAD commit ID is used.

    • 以下占位符适用于 artifactsOveride.

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

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

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

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

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

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

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

    • 以下占位符适用于 cacheOveride.

      • cacheOverride-location:可选。The location of a ProjectCache object for this build that overrides the ProjectCache object specified in the build project. cacheOverride is optional and takes a ProjectCache object. location 对象需要 ProjectCache

      • cacheOverride-type:可选。The type of a ProjectCache object for this build that overrides the ProjectCache object specified in the build project. cacheOverride is optional and takes a ProjectCache object. type 对象需要 ProjectCache

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

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

    • 以下占位符适用于 environmentVariablesOveride.

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

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

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

    • gitCloneDepthOverride:可选。The value of the Git clone depth in the build project whose value you want to override for this build. 如果您的源类型是 Amazon S3,则不支持此值。

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

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

    • insecureSslOverride: Optional boolean that specifies whether to override the insecure TLS setting specified in the build project. 不安全的 TLS 设置确定是否忽略 TLS 警告,并连接到项目源代码。This override applies only if the build's source is GitHub Enterprise Server.

    • privilegedModeOverride: Optional boolean. 如果设置为 true,则构建将覆盖构建项目中的特权模式。

    • queuedTimeoutInMinutesOverride: Optional integer that specifies the number of minutes a build is allowed to be queued before it times out. 最小值为 5 分钟,最大值为 480 分钟(8 个小时)。

    • reportBuildStatusOverride: Optional boolean that specifies whether to send your source provider the status of a build's start and completion. If you set this with a source provider other than GitHub, GitHub Enterprise Server, or Bitbucket, an invalidInputException is thrown.

    • sourceAuthOverride: Optional string. 此构建的授权类型,该授权类型将覆盖构建项目中定义的授权类型。This override applies only if the build project's source is Bitbucket or GitHub.

    • sourceLocationOverride: Optional string. 此构建的源位置,该源位置将覆盖构建项目中定义的源位置。

    • serviceRoleOverride: Optional string. 此构建的服务角色的名称,该角色将覆盖构建项目中指定的角色。

    • sourceTypeOverride: Optional string. 此构建的源输入类型,该源输入将覆盖构建项目中定义的源输入。Valid strings are NO_SOURCE, CODECOMMIT, CODEPIPELINE, GITHUB, S3, BITBUCKET, and GITHUB_ENTERPRISE.

    • timeoutInMinutesOverride: Optional number. 构建项目中定义覆盖此构建项目的构建超时分钟数。

    我们建议您将具有敏感值(例如 AWS 访问密钥 ID、AWS 秘密访问密钥或密码)的环境变量作为参数存储在 Amazon EC2 Systems Manager Parameter Store 中。如果 CodeBuild Parameter Store 中存储的参数的名称以 Amazon EC2 Systems Manager 开头(例如,/CodeBuild/),则 /CodeBuild/dockerLoginPassword). 可以使用该参数。可以使用 CodeBuild 控制台在 Amazon EC2 Systems Manager. 中创建参数。Choose Create a parameter, and then follow the instructions. (In that dialog box, for KMS key, you can optionally 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 during retrieval.) If you use the CodeBuild console to create a parameter, the console starts the parameter with /CodeBuild/ as it is being stored. 但是,如果您使用 Amazon EC2 Systems Manager Parameter Store 控制台创建参数,则必须使用以 /CodeBuild/ 开头的参数名称,且必须将 Type (类型) 设置为 Secure String (安全字符串). For more information, see AWS Systems Manager parameter store and Walkthrough: Create and test a String parameter (console) in the Amazon EC2 Systems Manager User Guide.

    如果您的构建项目引用了 Amazon EC2 Systems Manager Parameter Store 中存储的参数,则构建项目的服务角色必须允许 ssm:GetParameters 操作。If you chose Create a new service role in your account earlier, then CodeBuild includes this action in the default service role for your build project automatically. However, if you chose Choose an existing service role from your account, then you must include this action in your service role separately.

    您设置的环境变量将替换现有的环境变量。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.

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

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

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

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

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

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

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

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