

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

# AWS CodeBuild 生成和测试操作参考
<a name="action-reference-CodeBuild"></a>

允许您将构建和测试作为管道的一部分来运行。运行 CodeBuild 生成或测试操作时，buildspec 中指定的命令将在 CodeBuild 容器内运行。所有被指定为 CodeBuild 操作输入工件的工件都可以在运行命令的容器中找到。 CodeBuild 可以提供生成或测试操作。有关更多信息，请参阅 [AWS CodeBuild 《用户指南》](https://docs.aws.amazon.com/codebuild/latest/userguide/)。

当您在控制台中使用 CodePipeline 向导创建构建项目时， CodeBuild 生成项目会显示源提供者是 CodePipeline。在 CodeBuild控制台中创建构建项目时，您无法指定 CodePipeline 为源代码提供者，但是向管道中添加生成操作会调整 CodeBuild 控制台中的源代码。有关更多信息，请参阅《AWS CodeBuild API Reference》**中的 [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)。

**Topics**
+ [操作类型](#action-reference-CodeBuild-type)
+ [配置参数](#action-reference-CodeBuild-config)
+ [输入构件](#action-reference-CodeBuild-input)
+ [输出构件](#action-reference-CodeBuild-output)
+ [输出变量](#action-reference-CodeBuild-variables)
+ [服务角色权限： CodeBuild 操作](#edit-role-codebuild)
+ [操作声明（CodeBuild 示例）](#action-reference-CodeBuild-example)
+ [另请参阅](#action-reference-CodeBuild-links)

## 操作类型
<a name="action-reference-CodeBuild-type"></a>
+ 类别：`Build` 或 `Test`
+ 拥有者：`AWS`
+ 提供方：`CodeBuild`
+ 版本：`1`

## 配置参数
<a name="action-reference-CodeBuild-config"></a>

**ProjectName**  
是否必需：是  
`ProjectName`是中构建项目的名称 CodeBuild。

**PrimarySource**  
必需：条件  
`PrimarySource`参数的值必须是操作的其中一个输入项目的名称。 CodeBuild 查找 buildspec 文件并在包含此工件解压缩版本的目录中运行 buildspec 命令。  
如果为一个 CodeBuild 操作指定了多个输入构件，则此参数是必需的。当操作仅有一个源构件时，`PrimarySource` 构件默认为该构件。

**BatchEnabled**  
必需：否  
`BatchEnabled` 参数的布尔值允许操作在同一个构建执行中运行多个构建。  
启用此选项后，`CombineArtifacts` 选项将变为可用。  
有关启用批量构建的管道示例，请参阅[CodePipeline 集成 CodeBuild 和批量构建](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-batch.html)。

**BuildspecOverride**  
必需：否  
内联 buildspec 定义或覆盖构建项目中定义的最新声明的 buildspec 文件声明（仅限此构建）。在项目中定义的 buildspec 保持不变。  
如果此值已设置，则可能是以下任意一种：  
+ 内联 buildspec 定义。有关更多信息，请参阅 [Buildspec 语法](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax)中的语法参考。
+ 指向相对于内置 `CODEBUILD_SRC_DIR` 环境变量的值的替代 buildspec 文件的路径，或者是指向 S3 存储桶的路径。存储桶必须与构建项目位于同一 AWS 区域 中。使用其 ARN 指定 buildspec 文件（例如，`arn:aws:s3:::my-codebuild-sample2/buildspec.yml`）。如果此值未提供或设置为空字符串，源代码必须在其根目录中包含 buildspec 文件。有关添加路径的更多信息，请参阅 [Buildspec 文件名和存储位置](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-name-storage)。
由于此属性允许您更改将在容器中运行的构建命令，因此您应该注意，能够调用此 API 并设置此参数的 IAM 主体可以覆盖默认设置。此外，我们鼓励您使用值得信赖的 buildspec 位置，例如源存储库或 Amazon S3 存储桶中的文件。

**CombineArtifacts**  
必需：否  
`CombineArtifacts` 参数的布尔值将来自一个批量构建的所有构建构件合并为单个构件文件，将其用于构建操作。  
要使用此选项，必须启用 `BatchEnabled` 参数。

**EnvironmentVariables**  
必需：否  
此参数的值用于为管道中的 CodeBuild 操作设置环境变量。`EnvironmentVariables` 参数的值采用环境变量对象的 JSON 数组形式。请参阅[操作声明（CodeBuild 示例）](#action-reference-CodeBuild-example)中的示例参数。  
每个对象有三个均为字符串的部分：  
+ `name`：环境变量的名称或键。
+ `value`：环境变量的值。使用`PARAMETER_STORE`或`SECRETS_MANAGER`类型时，此值必须分别是您已经存储在 Sy AWS stems Manager 参数存储中的参数的名称或已经存储在 Secrets Manager 中的 AWS 密钥。
**注意**  
我们强烈不鼓励使用环境变量来存储敏感值，尤其是 AWS 证书。使用 CodeBuild 控制台或 AWS CLI 时，环境变量将以纯文本形式显示。对于敏感值，我们建议您改用 `SECRETS_MANAGER` 类型。
+ `type`：（可选）环境变量的类型。有效值为 `PARAMETER_STORE`、`SECRETS_MANAGER` 或 `PLAINTEXT`。如果未指定，则此值默认为 `PLAINTEXT`。
`type`为环境变量配置输入`name``value`、和时，尤其是在环境变量包含 CodePipeline 输出变量语法的情况下，请不要超过配置值字段的 1000 个字符限制。如果超过此限制，将会返回验证错误。
有关更多信息，请参阅 AWS CodeBuild API 参考[ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)中的。有关带有可解析为 GitHub 分支名称的环境变量的 CodeBuild 操作示例，请参阅[示例：使用带有 CodeBuild 环境 BranchName 变量的变量](actions-variables.md#actions-variables-examples-env-branchname)。

## 输入构件
<a name="action-reference-CodeBuild-input"></a>
+ **构件数：**`1 to 5`
+ **描述：查** CodeBuild 找 buildspec 文件并从主源构件的目录中运行 buildspec 命令。如果指定了单个输入源，或者为操作指定了多个输入源，则必须使用中的 CodeBuild `PrimarySource`操作配置参数来设置单个对象或主对象（如果是多个输入源） CodePipeline。

  各个输入构件会解压缩到各自的目录，其位置存储在环境变量中。主源构件的目录通过 `$CODEBUILD_SRC_DIR` 提供。所有其他输入构件的目录通过 `$CODEBUILD_SRC_DIR_yourInputArtifactName` 提供。
**注意**  
在 CodeBuild 项目中配置的构件将成为管道中 CodeBuild 操作使用的输入构件。

## 输出构件
<a name="action-reference-CodeBuild-output"></a>
+ **构件数：**`0 to 5`
+ **描述：**它们可用于使在 CodeBuild buildspec 文件中定义的工件可供管道中的后续操作使用。在仅定义了一个输出构件时，此构件可以直接在 buildspec 文件的 `artifacts` 部分下定义。在指定了多个输出构件时，引用的所有构件都必须在 buildspec 文件中定义为辅助构件。中的输出工件名称 CodePipeline 必须与 buildspec 文件中的工件标识符匹配。
**注意**  
在 CodeBuild 项目中配置的构件将成为管道操作中的 CodePipeline 输入构件。

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

## 输出变量
<a name="action-reference-CodeBuild-variables"></a>

此操作将生成在构建中导出的所有环境变量作为变量。有关如何导出环境变量的更多详细信息，请参阅 *AWS CodeBuild API 指南[ EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)*中的。

有关在中使用 CodeBuild 环境变量的更多信息 CodePipeline，请参阅中的示例[CodeBuild 操作输出变量](reference-variables.md#reference-variables-list-configured-codebuild)。有关可在中使用的环境变量的列表 CodeBuild，请参阅《*AWS CodeBuild 用户指南》*[中的构建环境中的环境变量](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

## 服务角色权限： CodeBuild 操作
<a name="edit-role-codebuild"></a>

如需 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 示例）
<a name="action-reference-CodeBuild-example"></a>

------
#### [ 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"
                }
            ]
        }
    ]
}
```

------

## 另请参阅
<a name="action-reference-CodeBuild-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [AWS CodeBuild 用户指南](https://docs.aws.amazon.com/codebuild/latest/userguide/)-有关带有 CodeBuild 操作的管道示例，请参阅[ CodePipeline 与一起使用 CodeBuild 来测试代码和运行构建](https://docs.aws.amazon.com/codebuild/latest/userguide/how-to-create-pipeline.html)。有关具有多个输入和输出 CodeBuild 构件的项目的示例，请参阅[与 CodeBuild 多个输入源CodePipeline集成和输出构件示例](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-multi-input-output.html)以及[多个输入源和输出构件示例](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html)。
+ [教程：创建用于构建和测试您的 Android 应用程序的管道 AWS Device Farm](tutorials-codebuild-devicefarm.md)— 本教程提供了一个示例 buildspec 文件和示例应用程序，用于创建管道，其中包含使用和构建和测试 Android 应用程序的 GitHub CodeBuild 源代码。 AWS Device Farm
+ 的@@ [编译规范参考 CodeBuild — 本参考主题提供了用于](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)理解 b CodeBuild uildspec 文件的定义和示例。有关可在中使用的环境变量的列表 CodeBuild，请参阅《*AWS CodeBuild 用户指南》*[中的构建环境中的环境变量](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。