

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

# 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 參考*中的 [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)。

**Topics**
+ [動作類型](#action-reference-CodeBuild-type)
+ [組態參數](#action-reference-CodeBuild-config)
+ [Input artifacts (輸入成品)](#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)參考。
+ 替代 buildspec 檔案相對於內建`CODEBUILD_SRC_DIR`環境變數值或 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`類型時，此值必須是您已存放在 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)。

## Input artifacts (輸入成品)
<a name="action-reference-CodeBuild-input"></a>
+ **成品數量：** `1 to 5`
+ **描述：**CodeBuild 會尋找 buildspec 檔案，並從主要來源成品的 目錄中執行 buildspec 命令。當指定單一輸入來源或針對 CodeBuild 動作指定多個輸入來源時，如果是多個輸入來源，則必須使用 CodePipeline 中的`PrimarySource`動作組態參數來設定單一成品或主要成品。

  每個輸入成品都會擷取到自己的目錄，其位置會存放在環境變數中。主要來源成品的目錄可透過 `$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)。

如需在 CodePipeline 中使用 CodeBuild 環境變數的詳細資訊，請參閱 中的範例[CodeBuild 動作輸出變數](reference-variables.md#reference-variables-list-configured-codebuild)。 CodePipeline 如需可在 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 成品的專案範例，請參閱 [CodePipeline Integration with CodeBuild and Multiple Input Sources and Output Artifacts Sample ](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-multi-input-output.html) and [Multiple Input Sources and Output Artifacts Sample](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html) 。
+ [教學課程：建立使用 建置和測試 Android 應用程式的管道 AWS Device Farm](tutorials-codebuild-devicefarm.md) – 本教學課程提供範例 buildspec 檔案和範例應用程式，以使用 GitHub 來源建立管道，該來源使用 CodeBuild 和 建置和測試 Android 應用程式 AWS Device Farm。
+ 適用於[ CodeBuild 的建置規格參考 ](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html) – 此參考主題提供了解 CodeBuild buildspec 檔案的定義和範例。如需可在 CodeBuild 中使用的環境變數清單，請參閱*AWS CodeBuild 《 使用者指南*》[中的建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。