

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

# 设置或更改管道执行模式
<a name="execution-modes"></a>

您可以为管道设置执行模式，以指定如何处理多重执行。

有关管道执行模式的更多信息，请参阅[管道执行的工作原理](concepts-how-it-works.md)。

**重要**  
对于 PARALLEL 模式下的管道，将管道执行模式编辑为 QUEUED 或 SUPERSEDED 时，管道状态不会将更新的状态显示为 PARALLEL。有关更多信息，请参阅 [从 PARALLEL 模式更改的管道将显示之前的执行模式](troubleshooting.md#troubleshooting-execution-mode-displayedstate)。

**重要**  
对于 PARALLEL 模式下的管道，将管道执行模式编辑为 QUEUED 或 SUPERSEDED 时，不会更新每种模式下管道的管道定义。有关更多信息，请参阅 [如果将 PARALLEL 模式下的管道编辑为 QUEUED 或 SUPERSEDED 模式，则管道定义会过时](troubleshooting.md#troubleshooting-execution-mode-editing)。

**重要**  
对于处于 PARALLEL 模式的管道，阶段回滚不可用。同样，具有回滚结果类型的故障条件无法添加到 PARALLEL 模式管道中。

## 查看执行模式的注意事项
<a name="execution-modes-viewing"></a>

在特定执行模式下查看管道需要考虑一些因素。

对于 SUPERSEDED 和 QUEUED 模式，使用管道视图可查看正在进行的执行，单击执行 ID 可查看详细信息和历史记录。对于 PARALLEL 模式，单击执行 ID 可在可视化选项卡上查看正在进行的执行。

下图显示了 SUPERSEDED 模式在中的视图。 CodePipeline

![\[使用的一个发布流程示例 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/view-mode-superseded.png)


下图显示了中排队模式的 CodePipeline视图。

![\[使用的一个发布流程示例 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/view-mode-queued.png)


下图显示了中并行模式的视图 CodePipeline。

**重要**  
对于处于 PARALLEL 模式的管道，阶段回滚不可用。同样，具有回滚结果类型的故障条件无法添加到 PARALLEL 模式管道中。

![\[使用的一个发布流程示例 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/view-mode-parallel.png)




## 在执行模式之间切换时的注意事项
<a name="execution-modes-switching"></a>

以下是更改管道模式时的注意事项。在**编辑**模式下从一种执行模式切换到另一种执行模式并保存更改时，可能会调整某些视图或状态。

例如，从 PARALLEL 模式切换到 QUEUED 或 SUPERSEDED 模式时，在 PARALLEL 模式下启动的执行将继续运行。这些信息可在执行历史页面上查看。管道视图将显示之前在 QUEUED 或 SUPERSEDED 模式下运行的执行，否则将显示空状态。

再举一个例子，当从 QUEUED 或 SUPERSEDED 模式切换到并行模式时，您将不再看到管道页面。 view/state 要查看 PARALLEL 模式下的执行情况，请使用执行详细信息页面上的可视化选项卡。在 SUPERSEDED 或 QUEUED 模式下开始的执行将被取消。

下表提供了更多详细信息。


****  

| 模式更改 | 待执行和活动执行详细信息 | 管道状态详细信息 | 
| --- | --- | --- | 
| SUPERSEDED 到 SUPERSEDED/SUPERSEDED 到 QUEUED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/execution-modes.html)  | 管道状态（例如已取消）在第一种模式和第二种模式的版本之间保留。 | 
| QUEUED 到 QUEUED/QUEUED 到 SUPERSEDED |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/execution-modes.html)  | 管道状态（例如已取消）在第一种模式和第二种模式的版本之间保留。 | 
| PARALLEL 到 PARALLEL |  允许所有执行独立于管道定义更新运行。  |  空。并行模式没有管道状态。  | 
| SUPERSEDED 到 PARALLEL/QUEUED 到 PARALLEL |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/execution-modes.html)  |  空。并行模式没有管道状态。  | 

## 设置或更改管道执行模式（控制台）
<a name="execution-modes-console"></a>

您可以使用控制台设置管道执行模式。

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   将显示与您的 AWS 账户关联的所有管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

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

1. 在**编辑**页面上，选择**编辑：管道属性**。

1. 选择管道模式。
   + **Superseded**
   + **Queued（需要管道类型 V2）**
   + **Parallel（需要管道类型 V2）**

1. 在**编辑**页面上，选择**完成**。

## 设置管道执行模式（CLI）
<a name="execution-modes-cli"></a>

要使用 AWS CLI 来设置管道执行模式，请使用`create-pipeline`或`update-pipeline`命令。

1. 打开终端会话（Linux、macOS 或 Unix）或命令提示符 (Windows)，然后运行 **get-pipeline** 命令以将管道结构复制到 JSON 文件中。例如，对于名为 **MyFirstPipeline** 的管道，输入以下命令：

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

   该命令不会返回任何结果，但您创建的文件将出现在您运行命令所在的目录中。

1. 用任何纯文本编辑器打开 JSON 文件，修改文件结构以反映要设置的管道执行模式，如 QUEUED。

   ```
   "executionMode": "QUEUED"
   ```

   下面的示例显示了如何在具有两个阶段的管道示例中将执行模式设置为 QUEUED。

   ```
   {
       "pipeline": {
           "name": "MyPipeline",
           "roleArn": "arn:aws:iam::111122223333:role/service-role/AWSCodePipelineServiceRole-us-east-1-dkpippe",
           "artifactStore": {
               "type": "S3",
               "location": "bucket"
           },
           "stages": [
               {
                   "name": "Source",
                   "actions": [
                       {
                           "name": "Source",
                           "actionTypeId": {
                               "category": "Source",
                               "owner": "AWS",
                               "provider": "CodeCommit",
                               "version": "1"
                           },
                           "runOrder": 1,
                           "configuration": {
                               "BranchName": "main",
                               "OutputArtifactFormat": "CODE_ZIP",
                               "PollForSourceChanges": "true",
                               "RepositoryName": "MyDemoRepo"
                           },
                           "outputArtifacts": [
                               {
                                   "name": "SourceArtifact"
                               }
                           ],
                           "inputArtifacts": [],
                           "region": "us-east-1",
                           "namespace": "SourceVariables"
                       }
                   ]
               },
               {
                   "name": "Build",
                   "actions": [
                       {
                           "name": "Build",
                           "actionTypeId": {
                               "category": "Build",
                               "owner": "AWS",
                               "provider": "CodeBuild",
                               "version": "1"
                           },
                           "runOrder": 1,
                           "configuration": {
                               "ProjectName": "MyBuildProject"
                           },
                           "outputArtifacts": [
                               {
                                   "name": "BuildArtifact"
                               }
                           ],
                           "inputArtifacts": [
                               {
                                   "name": "SourceArtifact"
                               }
                           ],
                           "region": "us-east-1",
                           "namespace": "BuildVariables"
                       }
                   ]
               }
           ],
           "version": 1,
           "executionMode": "QUEUED"
       }
   }
   ```

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. 要应用更改，请运行 **update-pipeline** 命令，指定管道 JSON 文件：
**重要**  
务必在文件名前包含 `file://`。此命令中需要该项。

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

   该命令会返回编辑后的管道的整个结构。
**注意**  
**update-pipeline** 命令会停止管道。如果在运行 **update-pipeline** 命令时正在通过管道运行修订，则该运行会被停止。您必须手动启动管道，通过更新后的管道运行此修订。