

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

# 教程：根据分支名称筛选拉取请求以启动管道（V2 类型）
<a name="tutorials-github-featurebranches"></a>

在本教程中，您将创建一个连接到 GitHub .com存储库的管道，在该存储库中，源操作配置为使用筛选拉取请求的触发器配置启动管道。当指定分支发生指定的拉取请求事件时，管道就会启动。此示例向您演示如何创建一个可筛选分支名称的管道。有关使用触发器的更多信息，请参阅[为推送和拉取请求事件类型添加筛选条件（CLI）](pipelines-filter.md#pipelines-filter-cli)。有关使用 glob 格式的正则表达式模式筛选的更多信息，请参阅[使用语法中的 glob 模式](syntax-glob.md)。

**重要**  
作为创建管道的一部分，客户提供的 S3 工件存储桶将 CodePipeline 用于项目。（这与用于 S3 源操作的存储桶不同。） 如果 S3 工件存储桶与您的管道账户位于不同的账户中，请确保 S3 工件存储桶归其所有 AWS 账户 ，该存储桶是安全且可靠的。

本教程通过`CodeStarSourceConnection`操作类型连接到 GitHub .com。

**Topics**
+ [先决条件](#tutorials-github-featurebranches-prereq)
+ [步骤 1：创建一个管道，该管道在指定分支有拉取请求时启动](#tutorials-github-featurebranches-pipeline)
+ [第 2 步：在 GitHub .com 中创建并合并拉取请求以开始执行管道](#tutorials-github-featurebranches-pullrequest)

## 先决条件
<a name="tutorials-github-featurebranches-prereq"></a>

在开始之前，您必须执行以下操作：
+ 使用您的 GitHub .com 账户创建 GitHub .com 存储库。
+ 准备好您的 GitHub 凭证。当你使用 AWS 管理控制台 来建立连接时，系统会要求你使用自己的 GitHub 凭据登录。

## 步骤 1：创建一个管道，该管道在指定分支有拉取请求时启动
<a name="tutorials-github-featurebranches-pipeline"></a>

在此部分中，您将使用以下操作创建管道：
+ 与您的 GitHub .com存储库的连接和操作的源阶段。
+ 带有生成操作的 AWS CodeBuild 生成阶段。

**使用向导创建管道**

1. 登录 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

1. 在**欢迎**页面、**入门**页面或**管道**页面上，选择**创建管道**。

1. 在**步骤 1：选择创建选项**页面上的**创建选项**下，选择**构建自定义管道**选项。选择**下一步**。

1. 在**步骤 2：选择管道设置**的**管道名称**中，输入 **MyFilterBranchesPipeline**。

1. 在**管道类型**中，保留默认选择 **V2**。管道类型有不同的特点和价格。有关更多信息，请参阅 [管道类型](pipeline-types.md)。

1. 在**服务角色**中，选择**新建服务角色**。
**注意**  
如果您选择使用现有的 CodePipeline 服务角色，请确保已`codeconnections:UseConnection`将 IAM 权限添加到您的服务角色策略中。有关 CodePipeline 服务角色的说明，请参阅[为 CodePipeline 服务角色添加权限](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services)。

1. 在**高级设置**下，保留原定设置值。在**构件存储**中，选择**默认位置**以将默认构件存储（如指定为默认值的 Amazon S3 项目存储桶）用于为管道选择的区域中的管道。
**注意**  
这不是源代码的源存储桶。这是管道的项目存储。每个管道都需要一个单独的构件存储，例如 S3 存储桶。

   选择**下一步**。

1. 在**步骤 3：添加源阶段**页面上，添加源阶段：

   1. 在**来源提供商**中，选择 **GitHub （通过 GitHub应用程序）**。

   1. 在**连接**下，选择一个现有连接或创建一个新连接。要创建或管理 GitHub 源操作的连接，请参阅[GitHub 连接](connections-github.md)。

   1. 在**存储库名称**中，选择您的 GitHub .com存储库的名称。

   1. 在**触发器类型**下，选择**指定筛选条件**。

      在**事件类型**下，选择**拉取请求**。选择拉取请求下的所有事件，以便事件发生在创建、更新或关闭的拉取请求中。

      在**分支**下的**包含**字段中，输入 `main*`。  
![\[该图显示了在事件类型为“拉取请求”的触发器中选择了“包含”分支选项，其值为 main*\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/pullreq-example-triggers-edit.png)
**重要**  
使用此触发器类型启动的管道配置为使用 WebhookV2 事件，而不会使用 Webhook 事件（对所有推送事件进行更改检测）来启动管道。

   选择**下一步**。

1. 在**步骤 4：添加构建阶段**的**构建提供程序**中，选择 **AWS CodeBuild**。允许**区域**默认为管道区域。按照[教程：使用 Git 标签启动管道](tutorials-github-tags.md)中的说明选择或创建构建项目。此操作仅在本教程中用作创建管道所需的第二阶段。

1. 在**步骤 5：添加测试阶段**中，选择**跳过测试阶段**，并通过再次选择**跳过**接受警告消息。

   选择**下一步**。

1. 在 “**步骤 6：添加部署阶段**” 页上，选择 “**跳过部署阶段**”，然后再次选择 “**跳过**”，接受警告消息。选择**下一步**。

1. 在 “**步骤 7：查看**” 中，选择 “**创建管道**”。

## 第 2 步：在 GitHub .com 中创建并合并拉取请求以开始执行管道
<a name="tutorials-github-featurebranches-pullrequest"></a>

在本节中，您将创建并合并一个拉取请求。这将启动您的管道，针对打开的拉取请求执行一次，针对关闭的拉取请求执行一次。

**创建拉取请求并启动管道**

1. 在 GitHub .com 中，通过更改功能分支上的 README.md 并向该分支提出拉取请求来创建拉取请求。`main`提交更改，并带类似 `Update README.md for PR` 的消息。

1. 管道从源修订开始，将拉取请求的**源**消息显示为 **Update README.md for PR**。  
![\[该图显示了拉取请求的源消息，其中包含以下文本：Update README.md for PR\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/pullreq-example.png)

1. 选择 **History (历史记录)**。在管道执行历史记录中，查看启动管道执行的 CREATED 和 MERGED 拉取请求状态事件。  
![\[该图显示了管道执行历史记录，其中显示了启动管道执行的 CREATED 和 MERGED 拉取请求状态事件\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/pullreq-example-history.png)