

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

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

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

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

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

**注意**  
连接 CodePipeline 操作不适用于中国（北京）和中国（宁夏）区域。要参考其他可用操作，请参阅 [产品和服务与 CodePipeline](integrations.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 凭证。当你使用 Amazon Web Services 管理控制台 来建立连接时，系统会要求你使用自己的 GitHub 凭据登录。

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

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

1. 登录到 Amazon Web Services 管理控制台。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. 在**服务角色**中，选择**新建服务角色**。
**注意**  
如果您选择使用现有的 CodePipeline 服务角色，请确保已`codestar-connections:UseConnection`将 IAM 权限添加到您的服务角色策略中。有关 CodePipeline 服务角色的说明，请参阅[为 CodePipeline 服务角色添加权限](https://docs.amazonaws.cn/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. 在**构建提供程序**中，选择 **Amazon CodeBuild**。允许**区域**默认为管道区域。

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

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

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

   1. 对于**运行时**，选择**标准**。对于**图像**，请选择 **aws/codebuild/stan** dard: 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 项目。构建项目使用服务角色来管理 Amazon Web Services 服务 权限。此步骤可能需要几分钟时间。

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

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

   选择**下一步**。

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

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

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

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

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

   ```
   git log
   ```

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

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

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

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

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

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

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