

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 用阶段门控制工作流运行
<a name="workflows-gates"></a>

*阶段门*是一个工作流组件，您可以用它来要求工作流必须满足特定条件才能继续运行。门禁的一个例子是**批准**门，在该门禁中，用户必须在 CodeCatalyst控制台中提交批准，然后才能允许工作流程继续运行。

您可以在工作流中的操作序列之间或在第一个操作（**源**下载后立即运行）之前添加阶段门。如果需要的话，您也可以在最后一个操作之后添加阶段门。

有关工作流运行的更多信息，请参阅[运行工作流](workflows-working-runs.md)。

**Topics**
+ [阶段门类型](#workflows-gates-types)
+ [我可以设置阶段门与其他操作并行运行吗？](#workflows-approval-parallel)
+ [我能否使用阶段门来阻止工作流运行的启动？](#workflows-gates-prevent)
+ [阶段门的限制](#workflows-gate-limitations)
+ [向工作流添加阶段门](workflows-gates-add.md)
+ [按顺序执行阶段门和操作](workflows-gates-depends-on.md)
+ [指定阶段门的版本](workflows-gates-version.md)

## 阶段门类型
<a name="workflows-gates-types"></a>

目前，Amazon CodeCatalyst 支持一种门禁：**批准**门。有关更多信息，请参阅 [要求批准工作流运行](workflows-approval.md)。

## 我可以设置阶段门与其他操作并行运行吗？
<a name="workflows-approval-parallel"></a>

不能。阶段门只能在操作之前或之后运行。有关更多信息，请参阅[按顺序执行阶段门和操作](workflows-gates-depends-on.md)。

## 我能否使用阶段门来阻止工作流运行的启动？
<a name="workflows-gates-prevent"></a>

可以，有资格要求。

您可以阻止工作流运行去*执行任务*，这与阻止其*启动*略有不同。

要阻止工作流执行任务，请在工作流中的第一个操作之前添加阶段门。在这种情况下，工作流运行*将启动*，这意味着它将下载您的源存储库文件，但在阶段门解锁之前，它无法执行任务。

**注意**  
在启动后被阶段门阻止的工作流仍计入*每个空间的并行工作流运行最大数量*配额和其他配额。为确保您不会超过工作流配额，请考虑使用工作流触发器来有条件地启动工作流，而不是使用阶段门。还可以考虑使用拉取请求批准规则代替阶段门。有关配额、触发器和拉取请求批准规则的更多信息，请参阅 [中的工作流程配额 CodeCatalyst](workflows-quotas.md)、[使用触发器自动启动工作流运行](workflows-add-trigger.md)和[管理将拉取请求与审批规则合并的要求](source-pull-requests-approval-rules.md)。

## 阶段门的限制
<a name="workflows-gate-limitations"></a>

阶段门具有以下限制：
+ 阶段门不能与计算共享功能结合使用。有关此特征的更多信息，请参阅[跨操作共享计算](compute-sharing.md)。
+ 阶段门不能在操作组中使用。有关操作组的更多信息，请参阅[将操作分组为操作组](workflows-group-actions.md)。

# 向工作流添加阶段门
<a name="workflows-gates-add"></a>

在 Amazon CodeCatalyst 中，您可以向工作流添加阶段门，让工作流在满足某些条件的情况下才能运行。按照以下说明向工作流添加阶段门。

有关阶段门的更多信息，请参阅[用阶段门控制工作流运行](workflows-gates.md)。

**添加和配置阶段门**

1. 通过访问 [https://codecatalyst.aws/](https://codecatalyst.aws/) 打开 CodeCatalyst 控制台。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在左侧选择**阶段门**。

1. 在阶段门目录中，搜索阶段门，然后选择加号（**\$1**），将该阶段门添加到您的工作流中。

1. 配置阶段门。选择**可视化**以使用可视化编辑器，或者选择 **YAML** 以使用 YAML 编辑器。有关详细说明，请参阅：
   + [添加“批准”阶段门](workflows-approval-add.md)

1. （可选）选择**验证**以确保 YAML 代码有效。

1. 选择**提交**以提交您的更改。

# 按顺序执行阶段门和操作
<a name="workflows-gates-depends-on"></a>

在 Amazon CodeCatalyst 中，您可以将某个阶段门设置为在工作流操作、操作组或阶段门之前或之后运行。例如，您可以将 `Approval` 阶段门设置为在 `Deploy` 操作之前运行。在这种情况下，`Deploy` 操作可以说是*依赖于* `Approval` 阶段门。

要在阶段门和操作之间设置依赖关系，请配置阶段门或操作的**依赖于**属性。有关说明，请参阅[设置操作之间的依赖关系](workflows-depends-on-set-up.md)。所引用的说明介绍的是工作流*操作*，但同样适用于阶段门。

有关如何设置阶段门**依赖于**属性的示例，请参阅[示例：“批准”阶段门](workflows-approval-example.md)。

有关阶段门的更多信息，请参阅[用阶段门控制工作流运行](workflows-gates.md)。

有关工作流操作的更多信息，请参阅[配置工作流操作](workflows-actions.md)。

# 指定阶段门的版本
<a name="workflows-gates-version"></a>

默认情况下，当您向工作流添加阶段门时，CodeCatalyst 会使用以下格式将完整版本添加到工作流定义文件中：

`vmajor.minor.patch` 

例如：

```
My-Gate:
  Identifier: aws/approval@v1
```

您可以使用加长版本，使工作流使用阶段门的特定主要或次要版本。有关说明，请参阅[指定要使用的操作版本](workflows-action-versions.md)。所引用的主题说明的是工作流操作，但同样适用于阶段门。

有关 CodeCatalyst 中阶段门的更多信息，请参阅[用阶段门控制工作流运行](workflows-gates.md)。