

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

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

# 示例：工作流中的触发器
<a name="workflows-add-trigger-examples"></a>

以下示例说明如何在 Amazon CodeCatalyst 工作流程定义文件中添加不同类型的触发器。

有关触发器的更多信息，请参阅[使用触发器自动启动工作流运行](workflows-add-trigger.md)。

**Topics**
+ [示例：一个简单的代码推送触发器](#workflows-add-trigger-examples-push-simple)
+ [示例：一个简单的“push to main”触发器](#workflows-add-trigger-examples-push-main)
+ [示例：一个简单的拉取请求触发器](#workflows-add-trigger-examples-pull-simple)
+ [示例：一个简单的计划触发器](#workflows-add-trigger-examples-schedule-simple)
+ [示例：带有计划和分支的触发器](#workflows-add-trigger-examples-schedule-branches)
+ [示例：带有计划、推送和分支的触发器](#workflows-add-trigger-examples-schedule-push-branches)
+ [示例：带有拉取和分支的触发器](#workflows-add-trigger-examples-pull-branches)
+ [示例：带有拉取、分支和“CLOSED”事件的触发器](#workflows-add-trigger-examples-push-pull-close)
+ [示例：带有推送、分支和文件的触发器](#workflows-add-trigger-examples-push-multi)
+ [示例：手动触发器](#workflows-add-trigger-examples-manual)
+ [示例： CI/CD 多工作流程设置中的触发器](#workflows-add-trigger-usecases)

## 示例：一个简单的代码推送触发器
<a name="workflows-add-trigger-examples-push-simple"></a>

以下示例显示了一个触发器，在代码被推送到源存储库中的*任何*分支时，该触发器将启动工作流运行。

激活此触发器后，使用您要推送*到*的分支（即目标分支）中的文件 CodeCatalyst 启动工作流程运行。

例如，如果您将提交推送到`main`，则使用工作流定义文件和其他源文件 CodeCatalyst 启动工作流程运行。`main`

再举一个例子，如果您将提交推送到`feature-branch-123`，则使用工作流定义文件和其他源文件 CodeCatalyst 启动工作流程运行。`feature-branch-123`

```
Triggers:
  - Type: PUSH
```

**注意**  
如果您希望只有在推送到 `main` 时才启动工作流运行，请参阅[示例：一个简单的“push to main”触发器](#workflows-add-trigger-examples-push-main)。

## 示例：一个简单的“push to main”触发器
<a name="workflows-add-trigger-examples-push-main"></a>

以下示例显示了一个触发器，在代码被推送到源存储库中的 `main` 分支（而且*仅在*推送到 `main` 分支）时，该触发器将启动工作流运行。

```
Triggers:
  - Type: PUSH
    Branches:
      - main
```

## 示例：一个简单的拉取请求触发器
<a name="workflows-add-trigger-examples-pull-simple"></a>

以下示例显示了一个触发器，在源存储库中创建或修订了任何拉取请求时，该触发器将启动工作流运行。

*激活此触发器后，使用工作流程定义文件和您要提取的分支（即源分支）中的其他源文件 CodeCatalyst 启动工作流程运行。*

例如，如果您使用名为的源分支`feature-123`和名为的目标分支创建拉取请求`main`，则使用工作流定义文件和其他源文件 CodeCatalyst 启动工作流程运行。`feature-123`

```
Triggers:
  - Type: PULLREQUEST
    Events:
      - OPEN
      - REVISION
```

## 示例：一个简单的计划触发器
<a name="workflows-add-trigger-examples-schedule-simple"></a>

以下示例演示了在每星期一到星期五的午夜（UTC\$10）启动工作流运行的触发器。

激活此触发器后，将为源存储库中包含带有此触发器的工作流程定义文件的每个分支 CodeCatalyst 启动一个工作流程运行。

例如，如果您的源存储库中有三个分支、`main``release-v1``feature-123`、，并且每个分支都包含一个带有触发器的工作流程定义文件，则会 CodeCatalyst 启动三个工作流程运行：一个使用中的文件，另一个使用中的文件`main`，另一个使用中的文件`release-v1`，另一个使用中的文件，另一个使用中的文件`feature-123`。

```
Triggers:
  - Type: SCHEDULE
    Expression: "0 0 ? * MON-FRI *"
```

有关可在 `Expression` 属性中使用的 cron 表达式的更多示例，请参阅[Expression](workflow-reference.md#workflow.triggers.expression)。

## 示例：带有计划和分支的触发器
<a name="workflows-add-trigger-examples-schedule-branches"></a>

以下示例演示了在每天下午 6:15（UTC\$10）启动工作流运行的触发器。

激活此触发器后，使用`main`分支中的文件 CodeCatalyst 启动工作流程运行，然后为以开头的每个分支开始额外运行`release-`。

例如，如果您的源存储库中有名为`main``release-v1``bugfix-1`、、和`bugfix-2`的分支，则会 CodeCatalyst 启动两个工作流程运行：一次使用中的文件`main`，另一次使用中的文件`release-v1`。它*不会*为 `bugfix-1` 和 `bugfix-1` 分支启动工作流运行。

```
Triggers:
  - Type: SCHEDULE
    Expression: "15 18 * * ? *"
    Branches:
      - main
      - release\-.*
```

有关可在 `Expression` 属性中使用的 cron 表达式的更多示例，请参阅[Expression](workflow-reference.md#workflow.triggers.expression)。

## 示例：带有计划、推送和分支的触发器
<a name="workflows-add-trigger-examples-schedule-push-branches"></a>

以下示例演示了一个触发器，该触发器在每天午夜（UTC\$10）以及每当有代码推送到 `main` 分支时启动工作流运行。

在本示例中：
+ 工作流运行在每天午夜启动。工作流运行使用 `main` 分支中的工作流定义文件和其他源文件。
+ 每当您将提交推送到 `main` 分支时，也会启动工作流运行。该工作流运行使用目标分支（`main`）中的工作流定义文件和其他源文件。

```
Triggers:
  - Type: SCHEDULE
    Expression: "0 0 * * ? *"
    Branches:
      - main
  - Type: PUSH
    Branches: 
      - main
```

有关可在 `Expression` 属性中使用的 cron 表达式的更多示例，请参阅[Expression](workflow-reference.md#workflow.triggers.expression)。

## 示例：带有拉取和分支的触发器
<a name="workflows-add-trigger-examples-pull-branches"></a>

以下示例演示了一个触发器，每当有人对名为 `main` 的目标分支打开或修改拉取请求时，该触发器就会启动工作流运行。尽管 `Triggers` 配置中指定的分支是 `main`，但工作流运行将使用*源*分支（即您拉取*自*的分支）中的工作流定义文件和其他源文件。

```
Triggers:      
  - Type: PULLREQUEST
    Branches:
      - main
    Events:
      - OPEN
      - REVISION
```

## 示例：带有拉取、分支和“CLOSED”事件的触发器
<a name="workflows-add-trigger-examples-push-pull-close"></a>

以下示例演示了一个触发器，每当有人对以 `main` 开头的分支关闭拉取请求时，该触发器就会启动工作流运行。

在本示例中：
+ 当您关闭对以 `main` 开头的目标分支的拉取请求时，就会自动启动工作流运行，该工作流将使用（现已关闭）源分支中的工作流定义文件和其他源文件。
+ 如果您已将源存储库配置为在合并拉取请求后自动删除分支，则这些分支将永远没有机会进入 `CLOSED` 状态。这意味着合并的分支不会激活拉取请求 `CLOSED` 触发器。在这种情况下，激活 `CLOSED` 触发器的唯一方法是关闭拉取请求而不合并。

```
Triggers:     
  - Type: PULLREQUEST
    Branches:
      - main.*               
    Events:
      - CLOSED
```

## 示例：带有推送、分支和文件的触发器
<a name="workflows-add-trigger-examples-push-multi"></a>

以下示例演示了一个触发器，每当对 `main` 分支上的 `filename.txt` 文件或 `src` 目录中的任何文件进行更改时，该触发器就会启动工作流运行。

激活此触发器后，使用`main`分支中的工作流定义文件和其他源文件 CodeCatalyst 启动工作流程运行。

```
Triggers:
  - Type: PUSH
    Branches:
      - main
    FilesChanged:
      - filename.txt
      - src\/.*
```

## 示例：手动触发器
<a name="workflows-add-trigger-examples-manual"></a>

要配置手动触发器，请在工作流定义文件中省略 `Triggers` 部分。如果没有此部分，用户将被迫通过在 CodeCatalyst控制台中选择 “**运行**” 按钮来手动启动工作流程。有关更多信息，请参阅 [手动启动工作流运行](workflows-manually-start.md)。

## 示例： CI/CD 多工作流程设置中的触发器
<a name="workflows-add-trigger-usecases"></a>

此示例介绍当您想要使用单独的 Amazon CodeCatalyst 工作流程进行持续集成 (CI) 和持续部署 (CD) 时，如何设置触发器。

在此场景中，您设置两个工作流：
+ **CI 工作流** – 在创建或修订拉取请求时，此工作流会构建和测试您的应用程序。
+ **CD 工作流** – 在合并拉取请求时，此工作流会构建和部署您的应用程序。

**CI 工作流**的定义文件如下所示：

```
Triggers:      
  - Type: PULLREQUEST
    Branches:
      - main
    Events:
      - OPEN
      - REVISION
Actions:
  BuildAction:
    instructions-for-building-the-app
  TestAction:
    instructions-for-test-the-app
```

该`Triggers`代码指示每当软件开发人员创建拉取请求（或[修改](pull-requests-update.md)拉取请求），要求将其功能分支合并到分支时，就会自动启动工作流程运行。`main` CodeCatalyst 使用源分支（即功能分支）中的源代码启动工作流程运行。

**CD 工作流**的定义文件如下所示：

```
Triggers:      
  - Type: PUSH
    Branches:
      - main
Actions:
  BuildAction:
    instructions-for-building-the-app
  DeployAction:
    instructions-for-deploying-the-app
```

该`Triggers`代码指示在`main`发生合并时自动启动工作流程。 CodeCatalyst 使用`main`分支中的源代码启动工作流程运行。