

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

# 教程： CodeDeploy 用于从中部署应用程序 GitHub
<a name="tutorials-github"></a>

在本教程中，您将使用 CodeDeploy 将示例应用程序修订部署到运行 Amazon Linux 的单个 Amazon EC2 实例、单个红帽企业 Linux (RHEL) 实例或单个 Windows 服务器实例。 GitHub 有关与 GitHub 集成的信息 CodeDeploy，请参阅[CodeDeploy 与集成 GitHub](integrations-partners-github.md)。

**注意**  
您还可以使用 CodeDeploy 将应用程序修订部署到 Ubuntu 服务器实例。 GitHub 您可以使用[步骤 2：创建示例应用程序修订](tutorials-on-premises-instance-2-create-sample-revision.md)中所述的示例修订版[教程：使用 CodeDeploy （Windows 服务器、Ubuntu 服务器或红帽企业 Linux）将应用程序部署到本地实例](tutorials-on-premises-instance.md)，也可以创建与 Ubuntu Server 实例和兼容的修订版。 CodeDeploy要创建您自己的修订，请参阅[为 CodeDeploy 规划修订](application-revisions-plan.md)和[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)。

**Topics**
+ [先决条件](tutorials-github-prerequisites.md)
+ [第 1 步：设置 GitHub 账户](tutorials-github-create-github-account.md)
+ [步骤 2：创建 GitHub 存储库](tutorials-github-create-github-repository.md)
+ [步骤 3：将示例应用程序上传到您的 GitHub 存储库](tutorials-github-upload-sample-revision.md)
+ [步骤 4：预置实例](tutorials-github-provision-instance.md)
+ [步骤 5：创建应用程序和部署组](tutorials-github-create-application.md)
+ [步骤 6：将应用程序部署到实例](tutorials-github-deploy-application.md)
+ [步骤 7：监控和验证部署](tutorials-github-verify.md)
+ [步骤 8：清除](tutorials-github-clean-up.md)

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

在开始本教程之前，请执行以下操作：
+ 在本地计算机上安装 Git。要安装 Git，请参阅 [Git 下载](http://git-scm.com/downloads)。
+ 完成 [入门 CodeDeploy](getting-started-codedeploy.md)中的步骤，包括安装和配置 AWS CLI。如果您想使用将修订部署 AWS CLI 到实例，这一点 GitHub 尤其重要。

# 第 1 步：设置 GitHub 账户
<a name="tutorials-github-create-github-account"></a>

您将需要一个 GitHub 帐户来创建 GitHub 存储修订版本的存储库。如果您已经有一个 GitHub 帐户，请直接跳至[步骤 2：创建 GitHub 存储库](tutorials-github-create-github-repository.md)。

1. 前往 [https://github.com/join](https://github.com)。

1. 键入用户名、您的电子邮件地址和密码。

1. 选择 “**注册**” GitHub，然后按照说明进行操作。

# 步骤 2：创建 GitHub 存储库
<a name="tutorials-github-create-github-repository"></a>

您将需要一个 GitHub 存储库来存储修订版。

如果您已经有 GitHub 存储库，请务必在本教程**CodeDeployGitHubDemo**中使用其名称代替，然后直接跳到[步骤 3：将示例应用程序上传到您的 GitHub 存储库](tutorials-github-upload-sample-revision.md)。

1. 在[GitHub 主页](https://github.com/dashboard)上，执行以下任一操作：
   + 在 **Your repositories** 中，选择 **New repository**。
   + 在导航栏上，选择 **Create new**（**\$1**），然后选择 **New repository**。

1. 在 **Create a new repository** 页上，执行下列操作：
   + 在**存储库名称**框中，输入 **CodeDeployGitHubDemo**。
   + 选择 **Public**。
**注意**  
选择默认的 **Public（公有）**选项意味着任何人均可查看此存储库。您可以选择 **Private（私有）**选项，限制可对存储库执行查看和提交的人员。
   + 清除 **Initialize this repository with a README（使用自述文件初始化此存储库）**复选框。您将改为在下一步中手动创建 `README.md` 文件。
   + 选择**创建存储库**。

1. 按照适用于您的本地计算机类型的说明操作以使用命令行创建存储库。
**注意**  
如果您启用了双重身份验证 GitHub，请确保在提示输入密码时输入个人访问令牌而不是 GitHub 登录密码。有关信息，请参阅[提供您的双重身份验证代码](https://help.github.com/articles/providing-your-2fa-authentication-code/)。

**在本地 Linux、macOS 或 Unix 计算机上：**

1. 在终端上，逐一运行以下命令，您的 GitHub 用户名在*user-name*哪里：

   ```
   mkdir /tmp/CodeDeployGitHubDemo
   ```

   ```
   cd /tmp/CodeDeployGitHubDemo
   ```

   ```
   touch README.md
   ```

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. 在 `/tmp/CodeDeployGitHubDemo` 位置保持终端打开。

**在本地 Windows 计算机上：**

1. 以管理员身份从命令提示符运行以下命令（一次运行一条命令）：

   ```
   mkdir c:\temp\CodeDeployGitHubDemo
   ```

   ```
   cd c:\temp\CodeDeployGitHubDemo
   ```

   ```
   notepad README.md
   ```

1. 在记事本中，保存 `README.md` 文件。关闭记事本。逐一运行以下命令，您的 GitHub 用户名在*user-name*哪里：

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. 在 `c:\temp\CodeDeployGitHubDemo` 位置保持终端打开。

# 步骤 3：将示例应用程序上传到您的 GitHub 存储库
<a name="tutorials-github-upload-sample-revision"></a>

在此步骤中，您将从公有 Amazon S3 存储桶中的示例修订复制到您的 GitHub存储库。（为简单起见，为本教程提供的示例修订为单一网页。）

**注意**  
如果您使用您的某个修订而不是我们的示例修订，则您的修订必须：  
遵循[为 CodeDeploy 规划修订](application-revisions-plan.md)和[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)中的准则。
使用相应的实例类型。
可通过 GitHub 控制面板进行访问。
如果您的修订满足这些要求，请向前跳至[步骤 5：创建应用程序和部署组](tutorials-github-create-application.md)。  
如果您要部署到 Ubuntu 服务器实例，则需要将与 Ubuntu Server 实例兼容的修订版上传到 GitHub存储库中，以及。 CodeDeploy有关更多信息，请参阅[为 CodeDeploy 规划修订](application-revisions-plan.md)和[将应用程序规范文件添加到修订版中 CodeDeploy](application-revisions-appspec-file.md)。

**Topics**
+ [从本地 Linux、macOS 或 Unix 计算机推送示例修订](#tutorials-github-upload-sample-revision-unixes)
+ [从本地 Windows 计算机推送示例修订](#tutorials-github-upload-sample-revision-windows)

## 从本地 Linux、macOS 或 Unix 计算机推送示例修订
<a name="tutorials-github-upload-sample-revision-unixes"></a>

例如，在终端在 `/tmp/CodeDeployGitHubDemo` 位置仍处于打开状态的情况下，运行以下命令（一次运行一条命令）：

**注意**  
如果您计划部署到 Windows Server 实例，请在命令中使用 `SampleApp_Windows.zip` 替换 `SampleApp_Linux.zip`。

```
(Amazon S3 copy command)
```

```
unzip SampleApp_Linux.zip
```

```
rm SampleApp_Linux.zip
```

 

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

以下*(Amazon S3 copy command)*内容之一在哪里：
+ 美国东部（俄亥俄州）区域为 `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip . --region us-east-2`
+ 美国东部（弗吉尼亚州北部）区域为 `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip . --region us-east-1`
+ 美国西部（北加利福尼亚）区域为 `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip . --region us-west-1`
+ 美国西部（俄勒冈州）区域为 `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip . --region us-west-2`
+ 加拿大（中部）区域为 `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip . --region ca-central-1`
+ 欧洲地区（爱尔兰）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip . --region eu-west-1` 
+ 欧洲地区（伦敦）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip . --region eu-west-2` 
+ 欧洲地区（巴黎）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip . --region eu-west-3` 
+ 欧洲地区（法兰克福）区域为 `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip . --region eu-central-1`
+ 以色列（特拉维夫）区域为 `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Linux.zip . --region il-central-1`
+ 亚太地区（香港）区域为 `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Linux.zip . --region ap-east-1`
+ 亚太地区（东京）区域为 `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip . --region ap-northeast-1`
+ 亚太地区（首尔）区域为 `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip . --region ap-northeast-2`
+ 亚太地区（新加坡）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip . --region ap-southeast-1`
+ 亚太地区（悉尼）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip . --region ap-southeast-2`
+ 亚太地区（墨尔本）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Linux.zip . --region ap-southeast-4`
+ 亚太地区（孟买）区域为 `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip . --region ap-south-1`
+ 南美洲（圣保罗）区域为 `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip . --region sa-east-1`

## 从本地 Windows 计算机推送示例修订
<a name="tutorials-github-upload-sample-revision-windows"></a>

 例如，在命令提示符在 `c:\temp\CodeDeployGitHubDemo` 位置仍处于打开状态的情况下，运行以下命令（一次运行一条命令）：

**注意**  
如果您计划部署到 Amazon Linux 或 RHEL 实例，请在命令中使用 `SampleApp_Linux.zip` 替换 `SampleApp_Windows.zip`。

```
(Amazon S3 copy command)
```

将 ZIP 文件的内容直接解压缩到本地目录（`the`例如 `c:\temp\CodeDeployGitHubDemo`），而不要解压缩到一个新的子目录中。

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

以下*(Amazon S3 copy command)*内容之一在哪里：
+ 美国东部（俄亥俄州）区域为 `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Windows.zip . --region us-east-2`
+ 美国东部（弗吉尼亚州北部）区域为 `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Windows.zip . --region us-east-1`
+ 美国西部（北加利福尼亚）区域为 `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Windows.zip . --region us-west-1`
+ 美国西部（俄勒冈州）区域为 `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Windows.zip . --region us-west-2`
+ 加拿大（中部）区域为 `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Windows.zip . --region ca-central-1`
+ 欧洲地区（爱尔兰）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Windows.zip . --region eu-west-1`
+ 欧洲地区（伦敦）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Windows.zip . --region eu-west-2`
+ 欧洲地区（巴黎）区域为 `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Windows.zip . --region eu-west-3`
+ 欧洲地区（法兰克福）区域为 `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Windows.zip . --region eu-central-1`
+ 以色列（特拉维夫）区域为 `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Windows.zip . --region il-central-1`
+ 亚太地区（香港）区域为 `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Windows.zip . --region ap-east-1`
+ 亚太地区（东京）区域为 `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Windows.zip . --region ap-northeast-1`
+ 亚太地区（首尔）区域为 `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Windows.zip . --region ap-northeast-2`
+ 亚太地区（新加坡）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Windows.zip . --region ap-southeast-1`
+ 亚太地区（悉尼）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Windows.zip . --region ap-southeast-2`
+ 亚太地区（墨尔本）区域为 `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Windows.zip . --region ap-southeast-4`
+ 亚太地区（孟买）区域为 `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Windows.zip . --region ap-south-1`
+ 南美洲（圣保罗）区域为 `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Windows.zip . --region sa-east-1`

要将您自己的修订推送到 Ubuntu Server 实例，请将修订复制到您的本地存储库，然后调用：

```
git add .
git commit -m "Added Ubuntu app"
git push
```

# 步骤 4：预置实例
<a name="tutorials-github-provision-instance"></a>

在此步骤中，您将创建或配置示例应用程序将部署到的实例。您可以部署到 Amazon EC2 实例或运行所支持的操作系统的本地实例 CodeDeploy。有关信息，请参阅[CodeDeploy 代理支持的操作系统](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。（如果您已经配置了用于 CodeDeploy 部署的实例，请跳至下一步。）

**预置实例**

1. 按照[启动 Amazon EC2 实例（控制台）](instances-ec2-create.md#instances-ec2-create-console)中的说明预置实例。

1. 启动实例时，请记得在**添加标签**页面上指定一个标签。有关如何指定标签的详细信息，请参阅[启动 Amazon EC2 实例（控制台）](instances-ec2-create.md#instances-ec2-create-console)。

**验证 CodeDeploy 代理是否正在实例上运行**
+ 按照[验证 CodeDeploy 代理是否正在运行](codedeploy-agent-operations-verify.md)中的说明验证代理是否正在实例上运行。

成功配置实例并验证 CodeDeploy 代理正在运行后，请转到下一步。

# 步骤 5：创建应用程序和部署组
<a name="tutorials-github-create-application"></a>

在此步骤中，您将使用 CodeDeploy 控制台或创建应用程序和部署组，用于从存储 GitHub 库部署示例修订。 AWS CLI 



## 创建应用程序和部署组（控制台）
<a name="tutorials-github-create-application-console"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

   

1. 选择**创建应用程序**，然后选择**自定义应用程序**。

1. 在 **Application name（应用程序名称）**中，输入 **CodeDeployGitHubDemo-App**。

1. 在 **Compute Platform（计算平台）**中，选择 **EC2/On-premises（EC2/本地）**。

1. 选择**创建应用程序**。

1. 在**部署组**选项卡中，选择**创建部署组**。

1. 在 **Deployment group name（部署组名称）**中，输入 **CodeDeployGitHubDemo-DepGrp**。

1. 在**服务角色**中，选择您在为其创建 CodeDeploy 服务角色中[创建的服务角色的](getting-started-create-service-role.md)名称 CodeDeploy。

1. 在**部署类型**中，选择**就地**。

1. 在**环境配置**中，根据您使用的实例的类型，选择 **Amazon EC2 实例**或**本地实例**。对于**键**和**值**，根据[步骤 4：预置实例](tutorials-github-provision-instance.md)的介绍输入应用于您的实例的实例标签键和值。

1. 在**部署配置**中，选择**CodeDeployDefault。 AllatOnce**。

1. 在**负载均衡器**中，清除**启用负载均衡**。

1. 展开**高级**。

1. 在**警报**中，选择**忽略警报配置**。

1. 选择**创建部署组**，然后继续下一步。

## 创建应用程序和部署组（CLI）
<a name="tutorials-github-create-application-cli"></a>

1. 调用 **create-application** 命令以在 CodeDeploy 中创建一个名为 `CodeDeployGitHubDemo-App` 的应用程序：

   ```
   aws deploy create-application --application-name CodeDeployGitHubDemo-App
   ```

1. 调用 **create-deployment-group** 命令以创建一个名为 `CodeDeployGitHubDemo-DepGrp` 的部署组：
   + 如果您要部署到 Amazon EC2 实例，则*ec2-tag-key*是应用于您的亚马逊 EC2 实例的 Amazon EC2 实例标签密钥[步骤 4：预置实例](tutorials-github-provision-instance.md)。
   + 如果您要部署到 Amazon EC2 实例，*ec2-tag-value*则应用于您的亚马逊 EC2 实例的标签值是作为其中的一部分[步骤 4：预置实例](tutorials-github-provision-instance.md)。
   + 如果您要部署到本地实例，则*on-premises-tag-key*是作为本地实例的一部分应用于本地实例的本地实例标签密钥[步骤 4：预置实例](tutorials-github-provision-instance.md)。
   + 如果您要部署到本地实例，则*on-premises-tag-value*是作为本地实例的一部分应用于本地实例的本地实例标签值[步骤 4：预置实例](tutorials-github-provision-instance.md)。
   + *service-role-arn*是您在为其创建服务角色中[创建的服务角色的服务角色](getting-started-create-service-role.md) ARN。 CodeDeploy（按照[获取服务角色 ARN（CLI）](getting-started-create-service-role.md#getting-started-get-service-role-cli)中的说明执行操作可查找服务角色 ARN。）

   ```
   aws deploy create-deployment-group --application-name CodeDeployGitHubDemo-App --ec2-tag-filters Key=ec2-tag-key,Type=KEY_AND_VALUE,Value=ec2-tag-value --on-premises-tag-filters Key=on-premises-tag-key,Type=KEY_AND_VALUE,Value=on-premises-tag-value --deployment-group-name CodeDeployGitHubDemo-DepGrp --service-role-arn service-role-arn
   ```
**注意**  
该[create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)命令支持创建触发器，从而向主题订阅者发送有关部署和实例中指定事件的 Amazon SNS 通知。该命令还支持自动回滚部署和设置警报以在满足 Amazon CloudWatch 警报中的监控阈值时停止部署的选项。本教程中不包含用于这些操作的命令。

# 步骤 6：将应用程序部署到实例
<a name="tutorials-github-deploy-application"></a>

在此步骤中，您将使用 CodeDeploy 控制台或 AWS CLI 将示例修订从您的 GitHub 存储库部署到您的实例。



## 部署修订（控制台）
<a name="tutorials-github-deploy-application-console"></a>

1. 在**部署组详细信息**页上，选择**创建部署**。

1. 在**部署组**中，选择 **`CodeDeployGitHubDemo-DepGrp`**。

1. 在 “**修订类型**” 中，选择**GitHub**。

1. 在 **Connect t** o 中 GitHub，执行以下任一操作：
   + 要创建 CodeDeploy 应用程序与 GitHub 帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。在**GitHub 帐户**中，输入用于标识此连接的名称，然后选择 **Connect to GitHub**。该网页会提示您授权 CodeDeploy 与名 GitHub 为的应用程序进行交互`CodeDeployGitHubDemo-App`。继续执行步骤 5。
   + 要使用已创建的连接，请在**GitHub帐户**中选择其名称，然后选择 **Connect to GitHub**。继续执行步骤 7。
   + 要创建与其他 GitHub 帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。选择 “**连接到其他 GitHub帐户**”，然后选择 “**连接到**” GitHub。继续执行步骤 5。

1. 按照 “**登录**” 页面上的说明使用您的 GitHub 帐户登录。

1. 在 **Authorize application** 页上，选择 **Authorize application**。

1. 在 “ CodeDeploy **创建部署**” 页面的 “**存储库名称**” 中，输入您用于登录的 GitHub 用户名，然后输入正斜杠 (`/`)，然后输入您推送应用程序修订的存储库的名称（例如，***my-github-user-name*/CodeDeployGitHubDemo**）。

   如果您不确定要输入的值，或者需要指定其他存储库，请执行以下步骤：

   1. 在单独的 Web 浏览器选项卡中，转到您的[GitHub 控制面板](https://github.com/dashboard)。

   1. 在 **Your repositories（您的资料库）**中，将鼠标指针悬停在目标存储库名称的上方。将出现一个工具提示，显示 GitHub 用户或组织名称，后跟正斜杠 (`/`)，后跟存储库的名称。将此值输入到**存储库名称**。
**注意**  
如果目标存储库名称未显示在**您的存储库**中，请使用**搜索 GitHub**框查找目标存储库以及 GitHub 用户或组织名称。

1. 在 “**提交 ID**” 框中，输入与将应用程序修订推送到相关的提交 ID GitHub。

   如果您不确定要输入的值，请执行以下步骤：

   1. 在单独的 Web 浏览器选项卡中，转到您的[GitHub 控制面板](https://github.com/dashboard)。

   1. 在**您的存储库**中，选择 **CodeDeployGitHubDemo**。

   1. 在提交列表中，找到与您的应用程序修订推送相关的提交 ID 并将其复制到 GitHub。此 ID 的长度通常为 40 个字符并包含字母和数字。（请不要使用提交 ID 的较短版本，它通常是较长版本的前 10 个字符。）

   1. 将提交 ID 粘贴到 **Commit ID** 框中。

1. 选择 **Deploy**，然后继续执行下一步。

## 部署修订（CLI）
<a name="tutorials-github-deploy-application-cli"></a>

在调用任何与之交互的 AWS CLI 命令 GitHub （例如接下来要调用的**create-deployment**命令）之前，必须 CodeDeploy 授予使用您的 GitHub 用户帐户与之交互 GitHub 的`CodeDeployGitHubDemo-App`权限。当前，您必须使用 CodeDeploy 控制台执行此操作。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

   

1. 选择 **CodeDeployGitHubDemo-App**。

1. 在**部署**选项卡上，选择**创建部署**。
**注意**  
您不会创建新的部署。目前，这是授予代表您的 GitHub 用户帐户进行交互 GitHub 的 CodeDeploy 权限的唯一途径。

1. 从**部署组**中选择 **CodeDeployGitHubDemo-DepGrp**。

1. 在 “**修订类型**” 中，选择**GitHub**。

1. 在 **Connect t** o 中 GitHub，执行以下任一操作：
   + 要创建 CodeDeploy 应用程序与 GitHub 帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。在**GitHub 账户**中，键入一个名称来标识此连接，然后选择 **Connect to GitHub**。网页会提示您授权 CodeDeploy 与名 GitHub 为的应用程序进行交互`CodeDeployGitHubDemo-App`。继续执行步骤 8。
   + 要使用已创建的连接，请在**GitHub帐户**中选择其名称，然后选择 **Connect to GitHub**。继续执行步骤 10。
   + 要创建与其他 GitHub 帐户的连接，请在单独的 Web 浏览器选项卡 GitHub 中注销。选择 “**连接到其他 GitHub帐户**”，然后选择 “**连接到**” GitHub。继续执行步骤 8。

1. 按照 “**登录**” 页面上的说明使用您的 GitHub 用户名或电子邮件和密码登录。

1. 在 **Authorize application** 页上，选择 **Authorize application**。

1. 在 CodeDeploy **创建部署**页面上，选择**取消**。

1. 调用**create-deployment**命令将版本 GitHub 库中的版本部署到实例，其中：
   + *repository*是您的 GitHub 账户名，后跟正斜杠 (`/`)，后跟仓库名称 (`CodeDeployGitHubDemo`)，例如，。`MyGitHubUserName/CodeDeployGitHubDemo`

     如果您不确定要使用的值，或者需要指定其他存储库，请执行以下步骤：

     1. 在单独的 Web 浏览器选项卡中，转到您的[GitHub 控制面板](https://github.com/dashboard)。

     1. 在 **Your repositories（您的资料库）**中，将鼠标指针悬停在目标存储库名称的上方。将出现一个工具提示，显示 GitHub 用户或组织名称，后跟正斜杠 (`/`)，后跟存储库的名称。这是要使用的值。
**注意**  
如果目标存储库名称未出现在**您的存储库**中，请使用**搜索 GitHub**框查找目标存储库以及相应的 GitHub 用户或组织名称。
   + *commit-id*是与您推送到存储库的应用程序修订版本相关联的提交（例如，`f835159a...528eb76f`）。

     如果您不确定要使用的值，请执行以下步骤：

     1. 在单独的 Web 浏览器选项卡中，转到您的[GitHub 控制面板](https://github.com/dashboard)。

     1. 在**您的存储库**中，选择 **CodeDeployGitHubDemo**。

     1. 在提交列表中，找到与将您的应用程序修订推送到相关的提交 ID GitHub。此 ID 的长度通常为 40 个字符并包含字母和数字。（请不要使用提交 ID 的较短版本，它通常是较长版本的前 10 个字符。） 请使用此值。

   如果您使用的是本地 Linux、macOS 或 Unix 机器：

   ```
   aws deploy create-deployment \
     --application-name CodeDeployGitHubDemo-App \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name CodeDeployGitHubDemo-DepGrp \
     --description "My GitHub deployment demo" \
     --github-location repository=repository,commitId=commit-id
   ```

   如果您正在本地 Windows 计算机上工作：

   ```
   aws deploy create-deployment --application-name CodeDeployGitHubDemo-App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name CodeDeployGitHubDemo-DepGrp --description "My GitHub deployment demo" --github-location repository=repository,commitId=commit-id
   ```

# 步骤 7：监控和验证部署
<a name="tutorials-github-verify"></a>

在此步骤中，您将使用 CodeDeploy 控制台或 AWS CLI 来验证部署是否成功。您将使用 Web 浏览器来查看已部署到您已创建或配置的实例的网页。

**注意**  
如果您要部署到 Ubuntu Server 实例，请使用您自己的测试策略来确定已部署的修订是否在实例上按预期运行，然后转至下一步。

**监控和验证部署（控制台）**

1. 在导航窗格中，展开**部署**，然后选择**部署**。

   

1. 在部署列表中，查找**应用程序**值为 **CodeDeployGitHubDemo-App**、**部署组**值为 **CodeDeployGitHubDemo-DepGrp** 的行。如果**状态**列中未显示**成功**或**失败**，请定期选择**刷新**按钮。

1. 如果**状态**列中出现**失败**，请按照[查看实例详细信息（控制台）](instances-view-details.md#instances-view-details-console)中的说明对部署进行故障排除。

1. 如果**状态**列中出现**成功**，则您现在可以通过 Web 浏览器验证部署。我们的示例修订将单个网页部署到实例。如果您要部署到 Amazon EC2 实例，请在您的 Web 浏览器中，转至该实例的 `http://public-dns`（例如，`http://ec2-01-234-567-890.compute-1.amazonaws.com`）。

1. 如果您能看到此网页，那么恭喜您！现在，您已经成功 AWS CodeDeploy 地使用从部署了修订 GitHub，可以直接跳到[步骤 8：清除](tutorials-github-clean-up.md)。

**监控和验证部署（CLI）**

1. 调用 **list-deployments** 命令以获取名为 `CodeDeployGitHubDemo-App` 的应用程序和名为 `CodeDeployGitHubDemo-DepGrp` 的部署组的部署 ID：

   ```
   aws deploy list-deployments --application-name CodeDeployGitHubDemo-App --deployment-group-name CodeDeployGitHubDemo-DepGrp --query "deployments" --output text
   ```

1. 调用 **get-deployment** 命令，并在 **list-deployments** 命令的输出中提供部署 ID：

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text
   ```

1. 如果返回 **Failed**，请按照[查看实例详细信息（控制台）](instances-view-details.md#instances-view-details-console)中的说明执行操作以排查部署的问题。

1. 如果返回 **Succeeded**，则可立即尝试通过 Web 浏览器验证部署。我们的示例修订是已部署到实例的单个网页。如果您要部署到 Amazon EC2 实例，可通过转至面向 Amazon EC2 实例的 `http://public-dns`（例如，`http://ec2-01-234-567-890.compute-1.amazonaws.com`）在 Web 浏览器中查看此页。

1. 如果您能看到此网页，那么恭喜您！您已成功使用 GitHub 存储库 AWS CodeDeploy 进行部署。

# 步骤 8：清除
<a name="tutorials-github-clean-up"></a>

为了避免您在本教程中使用的资源产生其他费用，您必须终止 Amazon EC2 实例及其关联资源。（可选）您可以删除与本教程关联的 CodeDeploy 部署组件记录。如果您仅在本教程中使用 GitHub存储库，那么现在也可以将其删除。

## 删除 CloudFormation 堆栈（如果您使用 CloudFormation 模板创建 Amazon EC2 实例）
<a name="tutorials-github-clean-up-cloudformation-template"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 在 **Stacks（堆栈）**列中，选择以 `CodeDeploySampleStack` 开头的堆栈。

1. 选择 **Delete（删除）**。

1. 当系统提示时，选择 **Delete stack（删除堆栈）**。这将删除 Amazon EC2 实例以及关联的 IAM 实例配置文件和服务角色。

## 手动取消注册并清除本地实例（如果您已预置本地实例）
<a name="tutorials-github-clean-up-on-premises-instance"></a>

1. 使用对以下所示的本地实例*your-instance-name*和关联区域调用 [dele](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html) gister 命令： AWS CLI *your-region*

   ```
   aws deploy deregister --instance-name your-instance-name --no-delete-iam-user --region your-region
   ```

1. 从本地实例调用 [uninstall](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html) 命令：

   ```
   aws deploy uninstall
   ```

## 手动终止 Amazon EC2 实例（如果您手动启动了 Amazon EC2 实例）
<a name="tutorials-github-clean-up-ec2-instance"></a>

1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中的 **Instances** 下，选择 **Instances**。

1. 选中要终止的 Amazon EC2 实例旁边的框。在 **Actions** 菜单中，指向 **Instance State**，然后选择 **Terminate**。

1. 在系统提示时，选择 **Yes, Terminate**。

## 删除 CodeDeploy 部署组件记录
<a name="tutorials-github-clean-up-codedeploy-records"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

   

1. 选择 **CodeDeployGitHubDemo-App**。

1. 选择**删除应用程序**。

1. 当系统提示时，输入 **Delete**，然后选择**删除**。

## 删除您的 GitHub 存储库
<a name="tutorials-github-clean-up-github-repository"></a>

请参阅[GitHub 帮助](https://help.github.com)[中的删除存储库](https://help.github.com/articles/deleting-a-repository/)。