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

Amazon CodeBuild 构建和测试操作参考

允许您将构建和测试作为管道的一部分来运行。当您运行 CodeBuild 构建或测试操作时,在 buildspec 中指定的命令会在 CodeBuild 容器内部运行。在运行命令的容器内部,所有指定为 CodeBuild 操作输入构件的构件均可用。CodeBuild 可以提供构件或测试操作。有关更多信息,请参阅《Amazon CodeBuild 用户指南》

当您在控制台中使用 CodePipeline 向导来创建构建项目时,CodeBuild 构建项目会显示的源提供方为 CodePipeline。当您在 CodeBuild 控制台中创建构建项目时,您无法指定 CodePipeline 作为源提供方;但是,将构建操作添加到管道中会调整 CodeBuild 控制台中的源。有关更多信息,请参阅 Amazon CodeBuild API 参考 中的项目源

操作类型

  • 类别:BuildTest

  • 拥有者:AWS

  • 提供方:CodeBuild

  • 版本:1

配置参数

ProjectName

必需:是

ProjectName 是 CodeBuild 中构建项目的名称。

PrimarySource

必需:有条件

PrimarySource 参数的值必须是操作的一个输入构件的名称。CodeBuild 会查找 buildspec 文件,并在包含此构件的解压缩版本的目录中运行 buildspec 命令。

如果为一个 CodeBuild 操作指定多个输入构件,则此参数是必需的。当操作仅有一个源构件时,PrimarySource 构件默认为该构件。

BatchEnabled

必需:否

BatchEnabled 参数的布尔值允许操作在同一个构建执行中运行多个构建。

启用此选项后,CombineArtifacts 选项将变为可用。

有关启用批量构建的管道示例,请参阅 CodePipeline 与 CodeBuild 和批量构建集成

BuildspecOverride

必需:否

内联 buildspec 定义或覆盖构建项目中定义的最新声明的 buildspec 文件声明(仅限此构建)。在项目中定义的 buildspec 保持不变。

如果此值已设置,则可能是以下任意一种:

  • 内联 buildspec 定义。有关更多信息,请参阅 Buildspec 语法中的语法参考。

  • 指向相对于内置 CODEBUILD_SRC_DIR 环境变量的值的替代 buildspec 文件的路径,或者是指向 S3 存储桶的路径。存储桶必须与构建项目位于同一 Amazon Web Services 区域 中。使用其 ARN 指定 buildspec 文件(例如,arn:aws:s3:::my-codebuild-sample2/buildspec.yml)。如果此值未提供或设置为空字符串,源代码必须在其根目录中包含 buildspec 文件。有关添加路径的更多信息,请参阅 Buildspec 文件名和存储位置

注意

由于此属性允许您更改将在容器中运行的构建命令,因此您应该注意,能够调用此 API 并设置此参数的 IAM 主体可以覆盖默认设置。此外,我们鼓励您使用值得信赖的 buildspec 位置,例如源存储库或 Amazon S3 存储桶中的文件。

CombineArtifacts

必需:否

CombineArtifacts 参数的布尔值将来自一个批量构建的所有构建构件合并为单个构件文件,将其用于构建操作。

要使用此选项,必须启用 BatchEnabled 参数。

EnvironmentVariables

必需:否

此参数的值用于为管道中的 CodeBuild 操作设置环境变量。EnvironmentVariables 参数的值采用环境变量对象的 JSON 数组形式。请参阅操作声明(CodeBuild 示例)中的示例参数。

每个对象有三个均为字符串的部分:

  • name:环境变量的名称或键。

  • value:环境变量的值。使用 PARAMETER_STORESECRETS_MANAGER 类型时,此值必须分别是您分别存储在 Amazon Systems Manager Parameter Store 中的参数的名称,或您存储在 Amazon Secrets Manager 中的密钥。

    注意

    我们强烈建议不要使用环境变量存储敏感值,尤其是 Amazon 凭证。当您使用 CodeBuild 控制台或 Amazon CLI 时,环境变量将以明文显示。对于敏感值,我们建议您改用 SECRETS_MANAGER 类型。

  • type:(可选)环境变量的类型。有效值为 PARAMETER_STORESECRETS_MANAGERPLAINTEXT。如果未指定,则此值默认为 PLAINTEXT

注意

为环境变量配置输入 namevaluetype 时,特别是在环境变量包含 CodePipeline 输出变量语法时,请不要超过配置值字段的 1000 字符限制。如果超过此限制,将会返回验证错误。

有关更多信息,请参阅 Amazon CodeBuild API 参考中的 EnvironmentVariable。有关采用环境变量(解析为 GitHub 分支名称)的 CodeBuild 操作示例,请参阅示例:将 BranchName 变量与 CodeBuild 环境变量一起使用

输入构件

  • 构件数:1 to 5

  • 描述:CodeBuild 会查找 buildspec 文件,并从主源构件的目录运行 buildspec 命令。如果为 CodeBuild 操作指定了单一输入源或多个输入源,则必须在 CodePipeline 中使用 PrimarySource 操作配置参数设置单一构件或主要构件(对应指定多个输入源的情况)。

    各个输入构件会解压缩到各自的目录,其位置存储在环境变量中。主源构件的目录通过 $CODEBUILD_SRC_DIR 提供。所有其他输入构件的目录通过 $CODEBUILD_SRC_DIR_yourInputArtifactName 提供。

    注意

    在您 CodeBuild 项目中配置的构件会成为供管道中的 CodeBuild 操作使用的输入构件。

输出构件

  • 构件数:0 to 5

  • 描述:它们可用于使 CodeBuild buildspec 文件中定义的构件可供管道中的后续操作使用。在仅定义了一个输出构件时,此构件可以直接在 buildspec 文件的 artifacts 部分下定义。在指定了多个输出构件时,引用的所有构件都必须在 buildspec 文件中定义为辅助构件。CodePipeline 中输出构件的名称必须与 buildspec 文件中的构件标识符匹配。

    注意

    在您 CodeBuild 项目中配置的构件会成为管道操作中的 CodePipeline 输入构件。

    如果为批量构建选择了 CombineArtifacts 参数,则输出构件位置将包含在同一执行中运行的多个构建的合并构件。

输出变量

此操作将生成在构建中导出的所有环境变量作为变量。有关如何导出环境变量的更多详细信息,请参阅 Amazon CodeBuild API 指南 中的环境变量

有关在 CodePipeline 中使用 CodeBuild 环境变量的更多信息,请参阅 CodeBuild 操作输出变量中的示例。有关可以在 CodeBuild 中使用的环境变量的列表,请参阅 Amazon CodeBuild 用户指南 中的构建环境中的环境变量

服务角色权限:CodeBuild 操作

对于 CodeBuild 支持,请将以下内容添加到策略语句中:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codebuild:BatchGetBuilds", "codebuild:StartBuild", "codebuild:BatchGetBuildBatches", "codebuild:StartBuildBatch" ], "Resource": [ "arn:aws:codebuild:*:111122223333:project/[[ProjectName]]" ], "Effect": "Allow" } ] }

操作声明(CodeBuild 示例)

YAML
Name: Build Actions: - Name: PackageExport ActionTypeId: Category: Build Owner: AWS Provider: CodeBuild Version: '1' RunOrder: 1 Configuration: BatchEnabled: 'true' CombineArtifacts: 'true' ProjectName: my-build-project PrimarySource: MyApplicationSource1 EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]' OutputArtifacts: - Name: MyPipeline-BuildArtifact InputArtifacts: - Name: MyApplicationSource1 - Name: MyApplicationSource2
JSON
{ "Name": "Build", "Actions": [ { "Name": "PackageExport", "ActionTypeId": { "Category": "Build", "Owner": "AWS", "Provider": "CodeBuild", "Version": "1" }, "RunOrder": 1, "Configuration": { "BatchEnabled": "true", "CombineArtifacts": "true", "ProjectName": "my-build-project", "PrimarySource": "MyApplicationSource1", "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]" }, "OutputArtifacts": [ { "Name": "MyPipeline-BuildArtifact" } ], "InputArtifacts": [ { "Name": "MyApplicationSource1" }, { "Name": "MyApplicationSource2" } ] } ] }

下列相关资源在您使用此操作的过程中会有所帮助。