

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

# 教程：使用 Git 标签启动管道
<a name="tutorials-github-tags"></a>

在本教程中，您将创建一个连接到 GitHub 存储库的管道，在该管道中，源操作是针对 Git 标签触发器类型配置的。在提交时创建 Git 标签后，您的管道就会启动。此示例说明如何创建允许根据标签名称语法筛选标签的管道。有关使用 glob 模式筛选的更多信息，请参阅[使用语法中的 glob 模式](syntax-glob.md)。

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

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

**注意**  
此功能在亚太地区（香港）、非洲（开普敦）、中东（巴林）或欧洲（苏黎世）区域不可用。要参考其他可用操作，请参阅 [与的产品和服务集成 CodePipeline](integrations.md)。有关在欧洲地区（米兰）区域使用此操作的注意事项，请参阅[CodeStarSourceConnection 用于 Bitbucket Cloud GitHub GitLab.com、 GitHub 企业服务器和 GitLab 自我管理的操作](action-reference-CodestarConnectionSource.md)中的说明。

**Topics**
+ [先决条件](#tutorials-github-tags-prereq)
+ [第 1 步：打开 CloudShell 并克隆您的存储库](#w2aac13c16c15)
+ [步骤 2：创建在 Git 标签上触发的管道](#tutorials-github-tags-pipeline)
+ [第 3 步：标记要发布的提交](#w2aac13c16c19)
+ [步骤 4：发布更改并查看日志](#tutorials-github-tags-view)

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

在开始之前，您必须执行以下操作：
+ 使用您的 GitHub 账户创建 GitHub 仓库。
+ 准备好您的 GitHub 凭证。当您使用 AWS 管理控制台 设置连接时，系统会要求您使用您的 GitHub 证书登录。

## 第 1 步：打开 CloudShell 并克隆您的存储库
<a name="w2aac13c16c15"></a>

您可以使用命令行界面来克隆存储库、执行提交和添加标签。本教程启动命令行界面 CloudShell 实例。

1. 登录到 AWS 管理控制台。

1. 在顶部导航栏中，选择该 AWS 图标。此时显示 AWS 管理控制台 主页。

1. 在顶部导航栏中，选择该 AWS CloudShell 图标。 CloudShell 打开。等待 CloudShell 环境创建完毕。
**注意**  
如果您看不到该 CloudShell 图标，请确保您位于支持的[区域 CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/faq-list.html#regions-available)。本教程假设您位于美国西部（俄勒冈州）区域。

1. 在中 GitHub，导航到您的存储库。选择**代码**，然后选择 **HTTPS**。复制路径。用于克隆 Git 存储库的地址复制到您的剪贴板。

1. 运行以下命令以克隆存储库。

   ```
   git clone https://github.com/<account>/MyGitHubRepo.git
   ```

1. 输入您的 GitHub 帐户`Username`，并在出现提示`Password`时输入。对于 `Password` 条目，您必须使用用户创建的令牌，而不是您的账户密码。

## 步骤 2：创建在 Git 标签上触发的管道
<a name="tutorials-github-tags-pipeline"></a>

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

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

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

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

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

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

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

1. 在**服务角色**中，选择**新建服务角色**。
**注意**  
如果您选择改用现有 CodePipeline 服务角色，请确保已`codestar-connections: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. 在 **Repository name (存储库名称)** 中，选择 GitHub 存储库的名称。

   1. 在**默认分支**中，选择在管道手动启动或使用非 Git 标签的源事件时要指定的分支。如果更改的来源不是触发器，或者管道执行是手动启动的，则使用的更改将是来自默认分支的 HEAD 提交。

   1. 在 **Webhook 事件**下的**筛选条件类型**中，选择**标签**。

      在**标签或模式**字段中输入 `release*`。
**重要**  
使用 Git 标签触发器类型启动的管道配置为使用 WebhookV2 事件，而不会使用 Webhook 事件（对所有推送事件进行更改检测）来启动管道。

   选择**下一步**。

1. 在**添加构建阶段**，添加一个构建阶段：

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

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

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

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

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

   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：查看**中，选择**创建管道**。

## 第 3 步：标记要发布的提交
<a name="w2aac13c16c19"></a>

创建管道并指定 Git 标签后，可以在 GitHub仓库中标记提交。在这些步骤中，您将使用 `release-1` 标签标记提交。Git 存储库中的每个提交都必须有唯一的 Git 标签。当您选择提交并对其进行标记时，可将来自不同分支的更改合并到您的管道部署中。请注意，标签名称 release 不适用于中发行版的概念 GitHub。

1. 参考您想要标记的复制的提交 ID。要查看每个分支中的提交，请在 CloudShell 终端中输入以下命令来捕获要标记的提交 ID：

   ```
   git log
   ```

1. 在 CloudShell 终端中，输入命令来标记你的提交并将其推送到原点。标记提交后，您可以使用 git push 命令将标签推送到源。在以下示例中，输入以下命令将 `release-1` 标签用于 ID 为 `49366bd` 的第二次提交。此标签将按管道 `release*` 标签筛选条件筛选并启动管道。

   ```
   git tag release-1 49366bd
   ```

   ```
   git push origin release-1
   ```  
![使用终端运行命令来标记提交。](https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/git-tags-pipeline.png)

## 步骤 4：发布更改并查看日志
<a name="tutorials-github-tags-view"></a>

1. 管道成功运行后，在成功构建阶段，选择**查看日志**。

   在 “**日志” 下**，查看 CodeBuild 编译输出。这些命令将输出所输入变量的值。

1. 在**历史记录**页面中，查看**触发器**列。查看触发器类型 **GitTag ：release-1。**