

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

# 在 CodePipeline 中編輯管道
<a name="pipelines-edit"></a>

管道說明您想要 AWS CodePipeline 遵循的發行程序，包括必須完成的階段和動作。您可以透過編輯管道來新增或移除這些元素。然而，當您編輯管道時，不可變更管道名稱或管道中繼資料。

您可以使用管道編輯頁面來編輯管道類型、變數和觸發條件。您也可以在管道中新增或變更階段和動作。

和建立管道不同，編輯管道並不會傳回最近一次透過管道執行的修訂版。如果您想透過剛編輯的管道執行最近的修訂版，您必須將其手動傳回。否則，編輯的管道將在下次您更改來源階段中設定的來源位置時執行。如需相關資訊，請參閱 [手動啟動管道](pipelines-rerun-manually.md)。

您可以將動作新增至管道中與管道不同的 AWS 區域。當 AWS 服務 是 動作的提供者，且此動作類型/提供者類型與您的管道位於不同的 AWS 區域時，這是跨區域動作。如需有關跨區域動作的詳細資訊，請參閱[在 CodePipeline 中新增跨區域動作](actions-create-cross-region.md)。

CodePipeline 使用變更偵測方法來在推送來源碼變更時啟動管道。這些偵測方法視原始碼類型而定：
+ CodePipeline 使用 Amazon CloudWatch Events 來偵測 CodeCommit 來源儲存庫或 Amazon S3 來源儲存貯體中的變更。

**注意**  
您使用主控台時會自動建立變更偵測資源。當您使用主控台建立或編輯管道時，將為您建立其他資源。如果您使用 AWS CLI 建立管道，則必須自行建立其他資源。如需建立或更新 CodeCommit 管道的詳細資訊，請參閱 [為 CodeCommit 來源 (CLI) 建立 EventBridge 規則](pipelines-trigger-source-repo-changes-cli.md)。如需使用 CLI 建立或更新 Amazon S3 管道的詳細資訊，請參閱 [為 Amazon S3 來源 (CLI) 建立 EventBridge 規則](create-cloudtrail-S3-source-cli.md)。

**Topics**
+ [編輯管道 (主控台)](#pipelines-edit-console)
+ [編輯管道 (AWS CLI)](#pipelines-edit-cli)

## 編輯管道 (主控台)
<a name="pipelines-edit-console"></a>

您可以使用 CodePipeline 主控台來新增、編輯或移除管道中的階段，以及在階段中新增、編輯或移除動作。

當您更新管道時，CodePipeline 會正常地完成所有執行中的動作，然後使執行中動作完成的階段和管道執行失敗。當管道更新時，您將需要重新執行管道。如需執行管道的詳細資訊，請參閱 [手動啟動管道](pipelines-rerun-manually.md)。

**編輯管道**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道名稱都會顯示。

1. 在 **Name (名稱)** 中，選擇您想編輯的管道名稱。這會開啟管道的詳細檢視，包含管道中各階段的每項動作之每項狀態。

1. 在管道詳細資訊頁面上，選擇 **Edit (編輯)**。

1. 若要編輯管道類型，請在**編輯****：管道屬性卡上選擇編輯**。選擇下列其中一個選項，然後選擇**完成**。
   + **V1** 類型管道具有 JSON 結構，其中包含標準管道、階段和動作層級參數。
   + **V2** 類型管道具有與 V1 類型相同的結構，以及其他參數支援，例如觸發條件和管道層級變數。

   管道類型在特性和價格方面有所不同。如需詳細資訊，請參閱[管道類型](pipeline-types.md)。

1. 若要編輯管道變數，請選擇**編輯：變數****卡上的編輯變數**。新增或變更管道層級的變數，然後選擇**完成**。

   如需管道層級變數的詳細資訊，請參閱 [變數參考](reference-variables.md)。如需在管道執行時傳遞之管道層級變數的教學課程，請參閱 [教學課程：使用管道層級變數](tutorials-pipeline-variables.md)。
**注意**  
雖然在管道層級新增變數是選擇性的，但對於在未提供值的管道層級使用變數指定的管道，管道執行將會失敗。

1. 若要編輯管道觸發條件，請在**編輯：觸發條件****卡片上選擇編輯觸發條件**。新增或變更觸發，然後選擇**完成**。

   如需新增觸發程序的詳細資訊，請參閱建立 Bitbucket Cloud、GitHub （透過 GitHub 應用程式）、GitHub Enterprise Server、GitLab.com, 或 GitLab 自我管理連線的步驟，例如 [GitHub 連線](connections-github.md)。

1. 若要在編輯頁面上**編輯**階段和動作，請執行下列其中一項操作：
   + 若要編輯階段，請選擇 **Edit stage (編輯階段)**。您可以搭配現有動作以序列和平行的方式新增動作：

     您也可選擇那些動作的編輯圖示以在此檢視中編輯動作。若要刪除動作，請在該動作上選擇刪除圖示。
   + 若要編輯動作，請選擇該動作的編輯圖示，然後在 **Edit action (編輯動作)**​ 上變更值。有星號 (**​\***) 標記的項目為必要項。
     + 對於 CodeCommit 儲存庫名稱和分支，會出現一則訊息，顯示要為此管道建立的 Amazon CloudWatch Events 規則。如果您移除 CodeCommit 來源，則會出現一則訊息，顯示要刪除的 Amazon CloudWatch Events 規則。
     + 對於 Amazon S3 來源儲存貯體，會出現一則訊息，顯示要為此管道建立的 Amazon CloudWatch Events 規則和 AWS CloudTrail 線索。如果您移除 Amazon S3 來源，則會出現一則訊息，顯示要刪除的 Amazon CloudWatch Events 規則和 AWS CloudTrail 線索。如果其他管道正在使用 AWS CloudTrail 追蹤，則不會移除追蹤並刪除資料事件。
   + 若要新增階段，請在您想新增階段的管道中的點選擇 **\+ Add stage (\+ 新增階段)**。提供該階段名稱，然後為其新增至少一個動作。有星號 (**​\***) 標記的項目為必要項。
   + 若要刪除階段，請在該階段上選擇刪除圖示。該階段與其所有動作都會被刪除。
   + 若要設定階段在失敗時自動轉返，請選擇**編輯階段**，然後選擇**設定階段失敗時自動轉返**核取方塊。

   例如，如果您想在管道中的階段新增序列動作：

   1. 在您想要新增動作的階段中，選擇 **Edit stage (編輯階段)**，然後選擇 **\+ Add action group (\+ 新增動作群組)**。

   1. 

      在 **Edit action (編輯動作)** 的 **Action name (動作名稱)** 中輸入您的動作名稱。**Action provider (動作供應商)** 清單會依類別顯示供應商選項。尋找類別 (例如 **Deploy (部署)**)。在 類別下，選擇提供者 （例如 **AWS CodeDeploy**)。在 **區域中**，選擇 AWS 資源建立所在區域或您計劃建立該資源的區域。**區域**欄位會指定為此動作類型和提供者類型建立 AWS 資源的位置。此欄位只會針對動作提供者為 的動作顯示 AWS 服務。**區域**欄位預設為與管道相同的 AWS 區域。

      如需新增動作供應商以及針對每個供應商使用預設欄位的範例，請參閱[建立自訂管道 （主控台）](pipelines-create.md#pipelines-create-console)。

      若要將 CodeBuild 做為建置動作或測試動作新增至階段，請參閱[《CodeBuild 使用者指南》中的搭配使用 CodePipeline 與 CodeBuild 來測試程式碼和執行建置](https://docs.aws.amazon.com/codebuild/latest/userguide/how-to-create-pipeline.html)。 *CodeBuild *
**注意**  
有些動作供應商 (例如 GitHub) 會要求您連線至供應商的網站後，才可完成該動作的組態設定。請務必在連線至供應商的網站時，使用該網站的登入資料。請勿使用您的 AWS 登入資料。

   1. 當您完成動作設定時，請選擇 **Save (儲存)**。
**注意**  
您不能在主控台檢視中重新命名階段。您可以使用想變更的名稱來新增階段，然後刪除舊的。刪除舊動作之前，請務必確認您已在該階段中新增所有您要的動作。

1. 當您完成管道編輯後，請選擇 **Save (儲存)** 以返回摘要頁面。
**重要**  
儲存變更之後，就無法復原變更。您必須再次編輯管道。若您在儲存變更時，有修訂正在透過管道執行，則該執行不會完成。若您想要特定的遞交或變更透過編輯過的管道來執行，您必須透過管道手動執行之。否則，下一個遞交或變更將透過管道自動執行。

1. 若要測試您的動作，請選擇**釋出變更**以處理透過管道遞交的 ，並將變更遞交至管道來源階段中指定的來源。或依照中的步驟[手動啟動管道](pipelines-rerun-manually.md)使用 AWS CLI 手動釋出變更。

## 編輯管道 (AWS CLI)
<a name="pipelines-edit-cli"></a>

您可以使用 **update-pipeline** 命令來編輯管道。

當您更新管道時，CodePipeline 會正常地完成所有執行中的動作，然後使執行中動作完成的階段和管道執行失敗。當管道更新時，您將需要重新執行管道。如需執行管道的詳細資訊，請參閱 [手動啟動管道](pipelines-rerun-manually.md)。

**重要**  
雖然您可以使用 AWS CLI 來編輯包含合作夥伴動作的管道，但您不得手動編輯合作夥伴動作的 JSON。若您這麼做，該合作夥伴動作會在您更新管道後失敗。

**編輯管道**

1. 開啟終端機工作階段 (Linux、macOS 或 Unix) 或命令提示字元 (Windows)，然後執行 **get-pipeline**命令將管道結構複製到 JSON 檔案。例如，針對名為 **MyFirstPipeline** 的管道輸入下列命令：

   ```
   aws codepipeline get-pipeline --name {{MyFirstPipeline}} >{{pipeline.json}}
   ```

   此命令不會傳回任何內容，但您建立的檔案應該會顯示在您執行命令的目錄中。

1. 以讓和純文字編輯器開啟 JSON 檔案，並修改該檔案的結構以反映您要在管道上進行的變更。例如，您可以新增或移除階段，或新增另一個動作至現有階段。

   下列範例顯示如何在 pipeline.json 檔案中新增另一個部署階段。此階段將在第一個部署階段 ({{Staging (預備)}}) 後執行。​ 
**注意**  
此僅為該檔案的一部分，而非整個結構。如需詳細資訊，請參閱[CodePipeline 管道結構參考](reference-pipeline-structure.md)。

   ```
   ,      
           {
               "name": "Staging",
               "actions": [
                       {
                           "inputArtifacts": [
                               {
                                   "name": "MyApp"
                               }
                           ],
                           "name": "Deploy-CodeDeploy-Application",
                           "actionTypeId": {
                               "category": "Deploy",
                               "owner": "AWS",
                               "version": "1",
                               "provider": "CodeDeploy"
                           },
                           "outputArtifacts": [],
                           "configuration": {
                               "ApplicationName": "CodePipelineDemoApplication",
                               "DeploymentGroupName": "CodePipelineDemoFleet"
                           },
                           "runOrder": 1
                       }
                   ]
                }{{,      
           {
               "name": "Production",
               "actions":  [
                       {
                           "inputArtifacts": [
                               {
                                   "name": "MyApp"
                               }
                           ],
                           "name": "Deploy-Second-Deployment",
                           "actionTypeId": {
                               "category": "Deploy",
                               "owner": "AWS",
                               "version": "1",
                               "provider": "CodeDeploy"
                           },
                           "outputArtifacts": [],
                           "configuration": {
                           "ApplicationName": "CodePipelineDemoApplication",
                           "DeploymentGroupName": "CodePipelineProductionFleet"
                           },
                           "runOrder": 1
                       }
                   ]
           }}}
       ]
   }
   ```

   如需有關使用 CLI 為管道新增核准動作的資訊，請參閱 [將手動核准動作新增至 CodePipeline 中的管道](approvals-action-add.md)。

   請確認您 JSON 檔案中的 `PollForSourceChanges` 參數已如下所示進行設定：​ 

   ```
                   "PollForSourceChanges": "false",
   ```

   CodePipeline 使用 Amazon CloudWatch Events 來偵測 CodeCommit 來源儲存庫和分支或 Amazon S3 來源儲存貯體中的變更。下一步驟包括了手動建立這些資源的說明。將旗標設為 `false` 將停用定期檢查，在使用建議的變更偵測方法時，您不需要該項功能。

1. 若要在與您的管道不同的區域中新增建置、測試或部署動作，您必須將以下項目新增到管道結構。如需詳細說明，請參閱 [在 CodePipeline 中新增跨區域動作](actions-create-cross-region.md)。
   + 將 `Region` 參數新增到動作的管道結構。
   + 使用 `artifactStores` 參數，為您在其中具有動作的每個區域指定成品儲存貯體。

1. 如果您使用的是使用 **get-pipeline** 命令擷取的管道結構，您必須在 JSON 檔案中修改結構。您必須從檔案移除 `metadata` 行，以讓 **update-pipeline** 命令可以使用它。從 JSON 檔案的管道結構移除此區段 (`"metadata": { }` 行以及 `"created"`、`"pipelineARN"` 和 `"updated"` 欄位)。

   例如，從結構中移除下列幾行：

   ```
   "metadata": {  
     "pipelineArn": "arn:aws:codepipeline:{{region}}:{{account-ID}}:{{pipeline-name}}",
     "created": "{{date}}",
     "updated": "{{date}}"
     }
   ```

   儲存檔案。

1. 如果您使用 CLI 編輯管道，您必須為管道手動管理建議的變更偵測資源：
   + 對於 CodeCommit 儲存庫，您必須建立 CloudWatch Events 規則，如 中所述[為 CodeCommit 來源 (CLI) 建立 EventBridge 規則](pipelines-trigger-source-repo-changes-cli.md)。
   + 對於 Amazon S3 來源，您必須建立 CloudWatch Events 規則和 AWS CloudTrail 線索，如 中所述[連線至使用 EventBridge 和 的 Amazon S3 來源動作 AWS CloudTrail](create-cloudtrail-S3-source.md)。

1. 若要套用您的變更，請執行 **update-pipeline** 命令、指定管道 JSON 檔案：
**重要**  
請確認在檔案名稱之前包含 `file://`。這是此命令必要項目。

   ```
   aws codepipeline update-pipeline --cli-input-json file://{{pipeline.json}}
   ```

   此命令會傳回所編輯管道的整個結構。
**注意**  
**update-pipeline** 命令將終止管道。若在您執行 **update-pipeline** 命令時有修訂正在透過管道執行，該執行將停止。您必須手動啟動管道，以透過更新的管道執行該修訂。

1. 開啟 CodePipeline 主控台，然後選擇您剛編輯的管道。

   此管道會顯示您的變更。下次您變更來源位置時，管道會透過修訂過的管道結構來執行該修訂。

1. 若要透過修訂的管道結構手動執行最新的修訂，請執行 **start-pipeline-execution**​ 命令。如需詳細資訊，請參閱[手動啟動管道](pipelines-rerun-manually.md)。

如需管道結構和預期值的詳細資訊，請參閱 [CodePipeline 管道結構參考](reference-pipeline-structure.md)和 [AWS CodePipeline API 參考](https://docs.aws.amazon.com/codepipeline/latest/APIReference)。