

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

# 教程：使用带有 GitHub 管道源的完整克隆
<a name="tutorials-github-gitclone"></a>

您可以在中为 GitHub 源操作选择完全克隆选项 CodePipeline。使用此选项可在管道构建操作中运行 Git 元数据的 CodeBuild 命令。

**注意**  
此处描述的完整克隆选项是指指定是否 CodePipeline 应克隆存储库元数据，这些元数据只能由 CodeBuild 命令使用。要将 GitHub [用户访问令牌](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)用于 CodeBuild 项目，请按照此处的步骤安装 GitHub 应用程序 AWS 连接器，然后将应用程序安装字段留空。 CodeConnections 将使用用户访问令牌进行连接。



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

在本教程中，您将创建一个连接到 GitHub 仓库的管道，对源数据使用完整克隆选项，并运行一个用于克隆仓库并对仓库执行 Git 命令的 CodeBuild 构建。

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

**Topics**
+ [先决条件](#tutorials-github-gitclone-prereq)
+ [步骤 1：创建自述文件](#tutorials-github-gitclone-file)
+ [步骤 2：创建管道并构建项目](#tutorials-github-gitclone-pipeline)
+ [步骤 3：更新 CodeBuild 服务角色策略以使用连接](#tutorials-github-gitclone-rolepolicy)
+ [步骤 4：在构建输出中查看存储库命令](#tutorials-github-gitclone-view)

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

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

## 步骤 1：创建自述文件
<a name="tutorials-github-gitclone-file"></a>

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

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

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

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

1. 选择**提交更改**。

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

## 步骤 2：创建管道并构建项目
<a name="tutorials-github-gitclone-pipeline"></a>

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

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

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

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

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

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

1. 在本教程中，为**管道类型**选择 **V1**。也可以选择 **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)。

      您可以为与特定提供程序的所有连接安装一个应用程序。如果您已经安装了 GitHub 应用程序 AWS 连接器，请选择它并跳过此步骤。
**注意**  
如果要创建[用户访问令牌](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)，请确保您已经为 GitHub 应用程序安装了 Conn AWS ector，然后将 “应用程序安装” 字段留空。 CodeConnections 将使用用户访问令牌进行连接。有关更多信息，请参阅[中的访问您的源提供商 CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/access-tokens.html)。

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

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

   1. 确保选择了**在源代码更改时启动管道**选项。

   1. 在**输出构件格式**下，选择**完整克隆**，对源存储库启用 Git 克隆选项。只有提供的操作 CodeBuild 才能使用 Git 克隆选项。在本教程[步骤 3：更新 CodeBuild 服务角色策略以使用连接](#tutorials-github-gitclone-rolepolicy)中，您将使用更新 CodeBuild 项目服务角色的权限，以使用此选项。

   选择**下一步**。

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

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

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

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

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

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

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

   1. 在**构建规范**下，为**构建规范**选择**插入构建命令**。选择**切换到编辑器**，然后将以下内容粘贴到**构建命令**。
**注意**  
在构建规范的 `env` 部分中，确保启用了 Git 命令的凭证助手，如本示例所示。

      ```
      version: 0.2
      
      env:
        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
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git archive --format=zip HEAD > application.zip
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
          - application.zip
          # - 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：更新 CodeBuild 服务角色策略以使用连接
<a name="tutorials-github-gitclone-rolepolicy"></a>

初始管道运行将失败，因为必须更新 CodeBuild 服务角色才能使用连接。在服务角色策略中添加 `codestar-connections:UseConnection` IAM 权限。有关在 IAM 控制台中更新策略的说明，请参阅[添加连接 Bitbucket、 GitHub、En GitHub terprise Server 或 GitLab .com 的 CodeBuild GitClone 权限](troubleshooting.md#codebuild-role-connections)。

## 步骤 4：在构建输出中查看存储库命令
<a name="tutorials-github-gitclone-view"></a>

1. 成功更新服务角色后，在失败 CodeBuild 阶段选择 “**重试**”。

1. 管道成功运行后，在成功的构建阶段上，选择**查看详细信息**。

   在详细信息页面上，选择**日志**选项卡。查看编 CodeBuild 译输出。这些命令将输出所输入变量的值。

   这些命令输出 `README.md` 文件内容，列出目录中的文件，克隆存储库，查看日志，然后将存储库存档为 ZIP 文件。