

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

# CodeBuild 规则
<a name="rule-reference-CodeBuild"></a>

创建条件时，可以添加 CodeBuild 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您可以使用 CodeBuild 规则来创建一个条件，当构建项目成功运行且符合规则条件时触发，例如构建成功运行且符合 beforeEntry 条件时。

**注意**  
对于使用**跳过**结果配置的 beforeEntry 条件，只有以下规则可用：`LambdaInvoke` 和 `VariableCheck`。

**Topics**
+ [服务角色策略权限](#rule-reference-Commands-policy)
+ [规则类型](#rule-reference-Commands-type)
+ [配置参数](#rule-reference-Commands-config)
+ [规则配置示例](#rule-reference-Commands-example)
+ [另请参阅](#rule-reference-Commands-links)

## 服务角色策略权限
<a name="rule-reference-Commands-policy"></a>

对于该规则的权限，请将以下内容添加到 CodePipeline 服务角色策略语句中。将权限范围缩小到资源级别。

```
{
    "Effect": "Allow",
    "Action": [
        "codebuild:BatchGetBuilds",
        "codebuild:StartBuild"
    ],
    "Resource": "resource_ARN"
},
```

## 规则类型
<a name="rule-reference-Commands-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`CodeBuild`
+ 版本：`1`

## 配置参数
<a name="rule-reference-Commands-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)。

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

**EnvironmentVariables**  
必需：否  
此参数的值用于为管道中的 CodeBuild 操作设置环境变量。`EnvironmentVariables` 参数的值采用环境变量对象的 JSON 数组形式。请参阅[操作声明（CodeBuild 示例）](action-reference-CodeBuild.md#action-reference-CodeBuild-example)中的示例参数。  
每个对象有三个均为字符串的部分：  
+ `name`：环境变量的名称或键。
+ `value`：环境变量的值。使用 `PARAMETER_STORE` 或 `SECRETS_MANAGER` 类型时，此值必须分别是您分别存储在 AWS Systems Manager Parameter Store 中的参数的名称，或您存储在 AWS Secrets Manager 中的密钥。
**注意**  
我们强烈建议不要使用环境变量存储敏感值，尤其是 AWS 凭证。当您使用 CodeBuild 控制台或 AWS CLI 时，环境变量将以明文显示。对于敏感值，我们建议您改用 `SECRETS_MANAGER` 类型。
+ `type`：（可选）环境变量的类型。有效值为 `PARAMETER_STORE`、`SECRETS_MANAGER` 或 `PLAINTEXT`。如果未指定，则此值默认为 `PLAINTEXT`。
为环境变量配置输入 `name`、`value` 和 `type` 时，特别是在环境变量包含 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="rule-reference-Commands-example"></a>

------
#### [ YAML ]

```
name: codebuild-rule
ruleTypeId:
  category: Rule
  owner: AWS
  provider: CodeBuild
  version: '1'
configuration:
  ProjectName: my-buildproject
  EnvironmentVariables: '[{"name":"VAR1","value":"variable","type":"PLAINTEXT"}]'
inputArtifacts:
- name: SourceArtifact
region: us-east-1
```

------
#### [ JSON ]

```
{
    "name": "codebuild-rule",
    "ruleTypeId": {
        "category": "Rule",
        "owner": "AWS",
        "provider": "CodeBuild",
        "version": "1"
    },
    "configuration": {
        "ProjectName": "my-buildproject"
    },
    "inputArtifacts": [
        {
            "name": "SourceArtifact",
            "EnvironmentVariables": "[{\"name\":\"VAR1\",\"value\":\"variable\",\"type\":\"PLAINTEXT\"}]"
        }
    ],
    "region": "us-east-1"
}
```

------

## 另请参阅
<a name="rule-reference-Commands-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ 有关规则和条件的更多信息，请参阅《CodePipeline API 指南》**中的[条件](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)、[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html) 和 [RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)。