

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

# 建立使用 CodeBuild 的管道 (AWS CLI)
<a name="how-to-create-pipeline-cli"></a>

使用下列程序建立使用 CodeBuild 建置原始程式碼的管道。

若要使用 AWS CLI 建立管道來部署建置的原始程式碼，或只測試原始程式碼，您可以調整*AWS CodePipeline 《 使用者指南*》中的[編輯管道 (AWS CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-edit-pipelines.html#how-to-edit-pipelines-cli) 和 [CodePipeline 管道結構參考](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)中的說明。

1. 在 CodeBuild 中建立或識別組建專案。如需詳細資訊，請參閱[建立組建專案](create-project.md)。
**重要**  
建置專案必須定義建置輸出成品設定 （即使 CodePipeline 覆寫它們）。如需詳細資訊，請參閱[建立建置專案 (AWS CLI)](create-project.md#create-project-cli)中的 `artifacts` 描述。

1. 請確定您已 AWS CLI 使用對應至本主題所述其中一個 IAM 實體的 AWS 存取金鑰和 AWS 私密存取金鑰來設定 。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[設定 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)。

1. 建立代表管線結構的 JSON 格式檔案。將檔案命名為 `create-pipeline.json` 或相似名稱。例如，此 JSON 格式結構會建立管道，其中包含參考 S3 輸入儲存貯體的來源動作，以及使用 CodeBuild 的建置動作：

   ```
   {
     "pipeline": {
       "roleArn": "arn:aws:iam::<account-id>:role/<AWS-CodePipeline-service-role-name>",
       "stages": [
         {
           "name": "Source",
           "actions": [
             {
               "inputArtifacts": [],
               "name": "Source",
               "actionTypeId": {
                 "category": "Source",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "S3"
               },
               "outputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "configuration": {
                 "S3Bucket": "<bucket-name>",
                 "S3ObjectKey": "<source-code-file-name.zip>"
               },
               "runOrder": 1
             }
           ]
         },
         {
           "name": "Build",
           "actions": [
             {
               "inputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "name": "Build",
               "actionTypeId": {
                 "category": "Build",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "CodeBuild"
               },
               "outputArtifacts": [
                 {
                   "name": "default"
                 }
               ],
               "configuration": {
                 "ProjectName": "<build-project-name>"
               },
               "runOrder": 1
             }
           ]
         }
       ],
       "artifactStore": {
         "type": "S3",
         "location": "<CodePipeline-internal-bucket-name>"
       },
       "name": "<my-pipeline-name>",
       "version": 1
     }
   }
   ```

   在此 JSON 格式資料中：
   + 的值`roleArn`必須符合您建立或識別為先決條件一部分之 CodePipeline 服務角色的 ARN。
   + `configuration` 中 `S3Bucket` 和 `S3ObjectKey` 的值會假設原始程式碼存放於 S3 儲存貯體中。如需其他來源碼儲存庫類型的設定，請參閱*AWS CodePipeline 《 使用者指南*》中的 [CodePipeline 管道結構參考](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)。
   + 的值`ProjectName`是您在此程序中稍早建立的 CodeBuild 建置專案的名稱。
   + `location` 的值為此管線使用的 S3 儲存貯體名稱。如需詳細資訊，請參閱*AWS CodePipeline 《 使用者指南*》中的[建立 S3 儲存貯體的政策以用作 CodePipeline 的成品存放](https://docs.aws.amazon.com/codepipeline/latest/userguide/access-permissions.html#how-to-create-bucket-policy)區。
   + `name` 的值為此管線的名稱。所有管線名稱對您的帳戶來說都必須是獨一無二的。

   雖然此資料僅描述來源動作和建置動作，但您可以為與測試、部署建置輸出成品、叫用 AWS Lambda 函數等相關的活動新增動作。如需詳細資訊，請參閱*AWS CodePipeline 《 使用者指南*》中的[AWS CodePipeline 管道結構參考](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)。

1. 切換到包含 JSON 檔案的資料夾，然後執行 CodePipeline **[create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html)**命令，指定檔案名稱：

   ```
   aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
   ```
**注意**  
您必須在支援 CodeBuild 的 AWS 區域中建立管道。如需詳細資訊，請參閱 *Amazon Web Services 一般參考* 中的 [AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)。

   JSON 格式的資料會出現在輸出中，CodePipeline 會建立管道。

1. 若要取得管道狀態的相關資訊，請執行 CodePipeline **[get-pipeline-state](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html)**命令，指定管道的名稱：

   ```
   aws codepipeline get-pipeline-state --name <my-pipeline-name>
   ```

   在輸出中，尋找確認建置成功的資訊。省略符號 (`...`) 用於顯示為求簡化而省略的資料。

   ```
   {
     ...
     "stageStates": [
       ...  
       {
         "actionStates": [
           {
             "actionName": "CodeBuild",
             "latestExecution": {
               "status": "SUCCEEDED",
               ...
             },
             ...
           }
         ]
       }
     ]
   }
   ```

   若您太早執行此命令，您可能會無法看到任何與建置動作有關的資訊。您可能需要執行此命令數次，直到管線完成執行建置動作。

1. 在成功建置之後，請遵循這些說明取得建置輸出成品。開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。
**注意**  
您也可以選擇 CodeBuild 主控台中相關組建詳細資訊頁面上的**組建成品**連結，以取得組建輸出成品。若要抵達此頁面，請跳過此程序中的其餘步驟，並參閱[檢視建置的詳細資訊 (主控台)](view-build-details.md#view-build-details-console)。

1. 在儲存貯體清單中，開啟管線使用的儲存貯體。儲存貯體名稱必須遵循以下格式：`codepipeline-<region-ID>-<random-number>`。您可以從 `create-pipeline.json` 檔案取得儲存貯體名稱，也可以執行 CodePipeline **get-pipeline**命令來取得儲存貯體的名稱。

   ```
   aws codepipeline get-pipeline --name <pipeline-name>
   ```

    在輸出中，`pipeline` 物件包含 `artifactStore` 物件，其中包含帶有儲存貯體名稱的 `location` 值。

1. 開啟與您管線名稱相符的資料夾 (例如，`<pipeline-name>`)。

1. 在該資料夾中，開啟名為 `default` 的資料夾。

1. 解壓縮 檔案的內容。若該資料夾中有多個檔案，請解壓縮 **Last Modified (最後修改)** 時間戳記最新的檔案內容。(您可能需要為檔案加上 `.zip` 副檔名，才能與您系統的 ZIP 公用程式搭配使用。) 組建輸出成品位於檔案的解壓縮內容中。