

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

# 教程：为管道创建变量检查规则作为“入口”条件
<a name="tutorials-varcheckrule"></a>

在本教程中，您将配置一个管道，该管道使用 GitHub作为源代码阶段的源操作提供者来持续传送文件。完成的管道会在您对源存储库中的源文件进行更改时检测更改。管道运行后，会根据进入构建阶段的条件中提供的源存储库名称和分支名称检查输出变量。

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

**重要**  
在此过程中，您在管道中添加的许多操作都涉及在创建管道之前需要创建的 AWS 资源。 AWS 源操作的资源必须始终在您创建管道的同一 AWS 区域创建。例如，如果您在美国东部（俄亥俄州）地区创建管道，则您的 CodeCommit 存储库必须位于美国东部（俄亥俄州）区域。  
您可以在创建管道时添加跨区域操作。 AWS 跨区域操作的资源必须位于您计划执行操作的同一 AWS 区域。有关更多信息，请参阅 [在中添加跨区域操作 CodePipeline](actions-create-cross-region.md)。

此示例使用带有 GitHub （版本 2）源操作和 CodeBuild生成操作的示例管道，其中生成阶段的输入条件将检查变量。

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

在开始之前，您必须执行以下操作：
+ 使用您的 GitHub 账户创建 GitHub 存储库。
+ 准备好您的 GitHub 凭证。当你使用 AWS 管理控制台 来建立连接时，系统会要求你使用自己的 GitHub 凭据登录。
+ 与存储库的连接，将 GitHub （通过 GitHub App）设置为管道的源操作。要创建与存储 GitHub 库的连接，请参阅[GitHub 连接](connections-github.md)。

## 第 1 步：创建示例源文件并将其添加到 GitHub 存储库中
<a name="tutorials-varcheckrule-push"></a>

在本节中，您将创建示例源文件并将其添加到管道用于源阶段的存储库中。在此示例中，您生成并添加以下内容：
+ 一个 `README.md` 文件。

创建存储 GitHub 库后，按照以下步骤添加自述文件。

1. 登录您的 GitHub 存储库并选择您的存储库。

1. 要创建新文件，请选择**添加文件**，然后选择**创建新文件**。将文件命名为 `README.md` 并添加以下文本。

   ```
   This is a GitHub repository!
   ```

1. 选择**提交更改**。在本教程中，请添加包含大写单词“Update”的提交消息，如下例所示：

   ```
   Update to source files
   ```
**注意**  
字符串的规则检查区分大小写。

   确保 `README.md` 文件位于存储库的根级别。

## 步骤 2：创建管道
<a name="tutorials-varcheckrule-create-pipeline"></a>

在此部分中，您将使用以下操作创建管道：
+ 一个与您的 GitHub 仓库连接和操作的源阶段。
+ 为变量检查规则配置了 On Entry 条件的 CodeBuild 构建阶段。

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

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

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

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

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

1. CodePipeline 提供 V1 和 V2 类型的管道，它们的特性和价格各不相同。在控制台中，您只能选择 V2 类型。有关更多信息，请参阅[管道类型](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)。有关定价的信息 CodePipeline，请参阅[定价](https://aws.amazon.com/codepipeline/pricing/)。

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. 在**高级设置**下，保留原定设置值。

   选择**下一步**。

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

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

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

   1. 在 **Repository name (存储库名称)** 中，选择 GitHub 存储库的名称。

   1. 在**分支名称**中，键入要使用的存储库分支。

   1. 确保**没有触发器**选项已选中。

   选择**下一步**。

1. 在**步骤 4：添加构建阶段**中，添加一个构建阶段：

   1. 在**构建提供程序**中，选择 **AWS CodeBuild**。允许**区域**默认为管道区域。

   1. 选择**创建项目**。

   1. 在**项目名称**中，输入此构建项目的名称。

   1. 在**环境映像**中，选择**托管映像**。对于**操作系统**，选择 **Ubuntu**。

   1. 对于**运行时**，选择**标准**。**对于 “**图像**”，选择:5.0 aws/codebuild/standard。**

   1. 对于**服务角色**，选择**新建服务角色**。
**注意**  
记下您的 CodeBuild 服务角色的名称。在本教程的最后一步，您会用到此角色名称。

   1. 在**构建规范**下，为**构建规范**选择**插入构建命令**。选择**切换到编辑器**，然后将以下内容粘贴到**构建命令**。

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - 
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. 选择 “**继续” CodePipeline**。这将返回到 CodePipeline 控制台并创建一个使用您的构建命令进行配置的 CodeBuild 项目。构建项目使用服务角色来管理 AWS 服务 权限。此步骤可能需要几分钟时间。

   1. 选择**下一步**。

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

   选择**下一步**。

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

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

## 步骤 2：编辑构建阶段以添加条件和规则
<a name="tutorials-varcheckrule-create-condition"></a>

在此步骤中，您要编辑阶段，为变量检查规则添加“进入时”条件。

1. 选择管道，然后选择**编辑**。选择在构建阶段添加入口规则。

   在**规则提供者**中，选择**VariableCheck**。

1. 在**变量**中，输入要检查的一个或多个变量。在**值**中，输入要对照已解析的变量进行检查的字符串值。在以下示例屏幕中，为“等于”检查创建了一条规则，为“包含”检查创建了另一条规则。  
![\[“等于”变量检查的规则创建页面\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/varcheck-tut-create-rule-equals.png)  
![\[“包含”变量检查的规则创建页面\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/varcheck-tut-create-rule-contains.png)

1. 选择**保存**。

   选择**完成**。

## 步骤 3：运行管道并查看已解析的变量
<a name="tutorials-varcheckrule-run"></a>

在此步骤中，您将查看变量检查规则的已解析值和结果。

1. 如以下示例所示，在规则检查成功后查看已解析的运行。  
![\[成功运行\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/varcheck-tut-run-succeeded.png)

1. 在**时间线**选项卡上查看变量信息。  
![\[显示“时间线”选项卡的历史记录页面，变量显示 succeeded\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/varcheck-tut-history.png)