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

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

Amazon CodeBuild

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

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

操作类型

  • 类别: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类型时,此值必须分别是您已经存储在 Sy Amazon stems Manager 参数存储中的参数的名称或已经存储在 Secrets Manager 中的 Amazon 密钥。

    注意

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

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

注意

当您type为环境变量配置输入namevalue、和时,尤其是在环境变量包含 CodePipeline 输出变量语法的情况下,请不要超过配置值字段的 1000 个字符限制。如果超过此限制,将会返回验证错误。

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

输入构件

  • 构件数:1 to 5

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

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

    注意

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

输出构件

  • 构件数:0 to 5

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

    注意

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

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

输出变量

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

有关在中使用 CodeBuild 环境变量的更多信息 CodePipeline,请参阅中的示例CodeBuild 操作输出变量。有关可在中使用的环境变量的列表 CodeBuild,请参阅《Amazon 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" } ] } ] }

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