AWS CodeBuild 构建和测试操作参考 - AWS CodePipeline

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

AWS CodeBuild 构建和测试操作参考

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

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

操作类型

  • 类别:BuildTest

  • 拥有者:AWS

  • 提供方:CodeBuild

  • 版本:1

配置参数

ProjectName

必需:是

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

PrimarySource

必需:条件

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

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

BatchEnabled

必需:否

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

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

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

CombineArtifacts

必需:否

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

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

EnvironmentVariables

必需:否

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

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

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

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

    注意

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

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

注意

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

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

输入构件

  • 构件数:1 to 5

  • 描述:CodeBuild 会查找构建规范文件,并从主源构件的目录运行构建规范命令。如果为 CodeBuild 操作指定了多个输入源,则必须在 CodePipeline 中使用 PrimarySource 操作配置参数设置此构件。

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

    注意

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

输出构件

  • 构件数:0 to 5

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

    注意

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

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

输出变量

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

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

操作声明(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" } ] } ] }

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