

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

# 在 CodePipeline 中编辑管道
编辑管道

管道描述您希望 Amazon CodePipeline 遵循的发布过程，包括必须完成的阶段和操作。您可以编辑管道以添加或删除这些元素。不过，在编辑管道时，无法更改某些值，例如管道名称或管道元数据。

您可以使用管道编辑页面编辑管道类型、变量和触发器。还可以在管道中添加或更改阶段和操作。

与创建管道不同，编辑管道不会通过管道重新运行最新的修订。如果要通过刚刚编辑的管道运行最新修订，您必须手动重新运行它。否则，编辑的管道将在您下次对在源阶段中配置的源位置进行更改时运行。有关信息，请参阅[手动启动管道](pipelines-rerun-manually.md)。

您可以将操作添加到与管道不同的 Amazon 区域中的管道。当 Amazon Web Services 服务 是操作的提供方，并且此操作类型/提供方类型与您的管道位于不同的 Amazon 区域中时，即为跨区域操作。有关跨区域操作的更多信息，请参阅[在中添加跨区域操作 CodePipeline](actions-create-cross-region.md)。

当推送源代码更改时，CodePipeline 使用更改检测方法启动您的管道。这些检测方法基于源类型：
+ CodePipeline 使用 Amazon CloudWatch Events 来检测 CodeCommit 源存储库或 Amazon S3 源桶中的更改。

**注意**  
您使用控制台时，将自动创建更改检测资源。在使用控制台创建或编辑管道时，将为您创建其他资源。如果使用 Amazon CLI 创建管道，您必须自行创建其他资源。有关创建或更新 CodeCommit 管道的更多信息，请参阅[为 CodeCommit 源创建 EventBridge 规则 (CLI)](pipelines-trigger-source-repo-changes-cli.md)。有关使用 CLI 创建或更新 Amazon S3 管道的更多信息，请参阅[为 Amazon S3 来源 (CLI) 创建 EventBridge 规则](create-cloudtrail-S3-source-cli.md)。

**Topics**
+ [

## 编辑管道（控制台）
](#pipelines-edit-console)
+ [

## 编辑管道（Amazon CLI）
](#pipelines-edit-cli)

## 编辑管道（控制台）


您可以使用 CodePipeline 控制台来添加、编辑或删除管道中的阶段，以及添加、编辑或删除某个阶段中的操作。

更新管道时，CodePipeline 会正常完成所有正在运行的操作，然后让运行操作已完成的阶段和管道执行失败。更新管道后，您需要重新运行管道。有关运行管道的更多信息，请参阅[手动启动管道](pipelines-rerun-manually.md)。

**编辑管道**

1. 通过以下网址登录Amazon Web Services 管理控制台并打开 CodePipeline 控制台：[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.amazonaws.cn/codesuite/codepipeline/home)。

   将会显示所有与您的 Amazon 账户关联的管道的名称。

1. 在 **Name** 中，选择您要编辑的管道的名称。这将打开管道的详细视图，包括管道每个阶段中每个操作的状态。

1. 在管道详细信息页中，选择**编辑**。

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. 要在**编辑**页面上编辑阶段和操作，请执行以下操作之一：
   + 要编辑阶段，请选择**编辑阶段**。您可以添加与现有操作串行或并行运行的操作 ：

     您还可以为这些操作选择编辑图标，在此视图中编辑操作。要删除某个操作，请选择该操作上的删除图标。
   + 要编辑某个操作，请选择该操作的编辑图标，然后在**编辑操作**上更改这些值。标记为星号（**\$1**）的项目都是必填的。
     + 对于 CodeCommit 存储库名称和分支，将显示一条消息，指明将为此管道创建 Amazon CloudWatch Events 规则。如果您删除 CodeCommit 源，则会显示一条消息，指明将删除 Amazon CloudWatch Events 规则。
     + 对于 Amazon S3 源桶，将显示一条消息，指明将为此管道创建 Amazon CloudWatch Events 规则和 Amazon CloudTrail 跟踪。如果您删除 Amazon S3 源，则会显示一条消息，指明将删除 Amazon CloudWatch Events 规则和 Amazon CloudTrail 跟踪。如果 Amazon CloudTrail 跟踪正由其他管道使用，则不会删除跟踪，但将删除数据事件。
   + 要添加阶段，请在管道中您要添加阶段的时间点选择 **\$1 添加阶段**。为阶段提供一个名称，然后向该阶段至少添加一个操作。标记为星号（**\$1**）的项目都是必填的。
   + 要删除阶段，请选择该阶段上的删除图标。阶段及其所有操作都将被删除。
   + 要将阶段配置为在失败时自动回滚，请选择**编辑阶段**，然后选中**配置阶段失败时的自动回滚**复选框。

   例如，如果您想要向管道中的阶段添加一系列操作：

   1. 在您要添加操作的阶段中，选择**编辑阶段**，然后选择 **\$1 添加操作组**。

   1. 

      在**编辑操作**的**操作名称**中，键入操作的名称。**操作提供程序**按类别显示提供程序选项。查找类别（例如**部署**）。在类别下，选择提供方（例如 ）**Amazon CodeDeploy**。在**区域**中，选择您已在其中创建或计划在其中创建资源的 Amazon 区域。**区域**字段指定为此操作类型和提供方类型创建 Amazon 资源的位置。此字段仅在操作提供方是 Amazon Web Services 服务 的情况下对操作显示。**区域**字段默认为与管道相同的 Amazon 区域。

      有关添加操作提供程序和使用每个提供程序的默认字段的示例，请参阅[创建自定义管道（控制台）](pipelines-create.md#pipelines-create-console)。

      要向阶段中添加 CodeBuild 作为构建操作或测试操作，请参阅 *CodeBuild 用户指南* 中的[将 CodePipeline 与 CodeBuild 结合使用以测试代码和运行构建](https://docs.amazonaws.cn/codebuild/latest/userguide/how-to-create-pipeline.html)。
**注意**  
有些操作提供程序（如 GitHub）要求您连接到该提供程序的网站，然后您才能完成操作的配置。当您连接到提供商的网站时，请确保您使用该网站的凭证。不要使用您的 Amazon 凭证。

   1. 配置完操作后，请选择**保存**。
**注意**  
您无法在控制台视图中重命名阶段。您可以添加具有您要更改的名称的阶段，然后删除旧阶段。确保您已添加在该阶段需要的所有操作，然后再删除旧操作。

1. 编辑完您的管道后，请选择**保存**以返回到摘要页面。
**重要**  
当您保存自己的更改后，便无法撤消这些更改。您必须重新编辑管道。如果当您保存更改时，修订正在通过您的管道运行，则运行将无法完成。如果您希望特定提交或更改通过编辑后的管道运行，则必须手动通过管道运行它。否则，下一个提交或更改将通过管道自动运行。

1. 要测试您的操作，请选择**发布更改**来处理通过管道的提交并将更改提交至管道的源阶段中指定的源。或者，按照 [手动启动管道](pipelines-rerun-manually.md) 中的步骤操作以使用 Amazon CLI 手动发布更改。

## 编辑管道（Amazon CLI）


您可以使用 **update-pipeline** 命令编辑管道。

更新管道时，CodePipeline 会正常完成所有正在运行的操作，然后让运行操作已完成的阶段和管道执行失败。更新管道后，您需要重新运行管道。有关运行管道的更多信息，请参阅[手动启动管道](pipelines-rerun-manually.md)。

**重要**  
虽然您可以使用 Amazon 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 源创建 EventBridge 规则 (CLI)](pipelines-trigger-source-repo-changes-cli.md)中所述。
   + 对于 Amazon S3 源，必须创建 CloudWatch Events 规则和 Amazon CloudTrail 跟踪，如[连接到使用 EventBridge 和的 Amazon S3 源操作 Amazon 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)和 [Amazon CodePipeline API 参考](https://docs.amazonaws.cn/codepipeline/latest/APIReference)。