

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 參數存放區中的參數名稱，或是您已存放在 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="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 指南*中的 [Condition](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)。