教程:创建简单的管道(CodeCommit存储库) - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:创建简单的管道(CodeCommit存储库)

在本教程中,您将使用 CodePipeline 将 CodeCommit 存储库中维护的代码部署到单个 Amazon EC2 实例。当您将更改推送到 CodeCommit 存储库时,您的管道就会被触发。该管道使用 CodeDeploy 部署服务将您的更改部署到 Amazon EC2 实例。

管道具有两个阶段:

  • 源操作的阶段( CodeCommit 来源)。

  • 您的部署操作的部署阶段( CodeDeploy 部署)。

最简单的入门方法 Amazon CodePipeline 是在 CodePipeline 控制台中使用创建管道向导。

注意

在开始之前,请确保已设置好要使用的 Git 客户端 CodeCommit。有关说明,请参阅设置 CodeCommit

步骤 1:创建 CodeCommit 存储库

首先,在中创建存储库 CodeCommit。您的管道在运行时将从该存储库获取源代码。您还可以创建一个本地存储库,在将代码推送到存储 CodeCommit 库之前,在其中维护和更新代码。

创建存储 CodeCommit 库

  1. 打开 CodeCommit 控制台,网址为 https://console.aws.amazon.com/codecommit/

  2. 在区域选择器中,选择要创建存储库和管道 Amazon Web Services 区域 的位置。有关更多信息,请参阅Amazon Web Services 区域 和端点

  3. 存储库页面上,选择创建存储库

  4. 创建存储库页面上的存储库名称中,输入存储库的名称(例如,MyDemoRepo)。

  5. 选择创建

注意

本教程的其余步骤将使用MyDemoRepo存储 CodeCommit 库的名称。如果您选择其他名称,请确保在本教程中通篇使用它。

设置本地存储库

在此步骤中,您将设置本地存储库以连接到您的远程 CodeCommit存储库。

注意

您无需设置本地存储库。还可以使用此控制台上传文件(如第 2 步:向 CodeCommit 存储库添加示例代码所述)。

  1. 在控制台中打开您的新存储库,选择页面右上角的克隆 URL,然后选择克隆 SSH。用于克隆 Git 存储库的地址复制到您的剪贴板。

  2. 在您的终端窗口或命令行中,导航到您要用来存储本地存储库的本地目录。在本教程中,我们使用 /tmp

  3. 运行以下命令以克隆存储库,使用您在上一步中复制的地址替换 SSH 地址。此命令创建一个名为 MyDemoRepo 的目录。您将示例应用程序复制到此目录。

    git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo

第 2 步:向 CodeCommit 存储库添加示例代码

在此步骤中,您将下载为示例演练创建的 CodeDeploy示例应用程序的代码,并将其添加到 CodeCommit 存储库中。

  1. 接下来,下载一个示例,并将该示例保存到本地计算机上的文件夹或目录中。

    1. 选择以下选项之一。如果要对 Linux 实例执行本教程中的步骤,请选择 SampleApp_Linux.zip

      • 如果您想使用部署到亚马逊 Linux 实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Linux.zip

      • 如果你想使用部署到 Windows 服务器实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Windows.zip

      示例应用程序包含以下用于部署的文件 CodeDeploy:

      • appspec.yml— 应用程序规范文件(AppSpec文件)是一个 YAML 格式的文件, CodeDeploy 用于管理部署。有关该 AppSpec 文件的更多信息,请参阅Amazon CodeDeploy 用户指南中的CodeDeploy AppSpec 文件参考

      • index.html - 索引文件包含已部署的示例应用程序的主页。

      • LICENSE.txt - 许可证文件包含示例应用程序的许可证信息。

      • 脚本文件 - 示例应用程序使用脚本将文本文件写入实例上的某个位置。为多个 CodeDeploy 部署生命周期事件分别写入一个文件,如下所示:

        • (仅限 Linux 示例)scripts 文件夹 - 该文件夹包含以下 shell 脚本,用于安装依赖项以及启动和停止自动部署的示例应用程序:install_dependenciesstart_serverstop_server

        • (仅限 Windows 示例)before-install.bat - 此批处理脚本用于 BeforeInstall 部署生命周期事件,它将运行以删除此示例在先前部署中写入的旧文件,并在您的实例上创建一个位置用于写入新文件。

    2. 下载压缩(zipped)文件。

  2. 将文件从 SampleApp_Linux.zip 解压缩到之前创建的本地目录(例如,/tmp/MyDemoRepoc:\temp\MyDemoRepo)。

    务必将文件直接放到本地存储库中。不要包括 SampleApp_Linux 文件夹。例如,在您的本地 Linux、macOS 或 Unix 计算机上,您的目录和文件层次结构应如下所示:

    /tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
  3. 要将文件上传到您的存储库,请使用以下方法之一。

    1. 要使用 CodeCommit 控制台上传文件,请执行以下操作:

      1. 打开 CodeCommit 控制台,然后从 “存储库” 列表中选择您的存储库

      2. 选择添加文件,然后选择上传文件

      3. 选择选择文件,然后浏览找到您的文件。要在文件夹下添加文件,请选择创建文件,然后输入带有文件名的文件夹名称,例如 scripts/install_dependencies。将文件内容粘贴到新文件中。

        通过输入您的用户名和电子邮件地址来提交更改。

        选择提交更改

      4. 对每个文件重复此步骤。

        您的存储库内容应如下所示:

        │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
    2. 使用 git 命令上传文件:

      1. 将目录更改为本地存储库:

        (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
      2. 运行以下命令以立即暂存您的所有文件:

        git add -A
      3. 运行以下命令以提交带有提交消息的文件:

        git commit -m "Add sample application files"
      4. 运行以下命令将本地存储库中的文件推送到存储 CodeCommit库:

        git push
  4. 您下载并添加到本地存储库中的文件现已添加到 CodeCommit MyDemoRepo存储库的main分支中,可以包含在管道中。

步骤 3:创建 Amazon EC2 Linux 实例并安装 CodeDeploy 代理

在此步骤中,您将创建要在其中部署示例应用程序的 Amazon EC2 实例。作为此过程的一部分,创建一个允许在实例上安装和管理 CodeDeploy 代理的实例角色。 CodeDeploy 代理是一个软件包,允许在 CodeDeploy 部署中使用实例。您还可以附加策略,允许实例获取 CodeDeploy 代理用于部署您的应用程序的文件,并允许该实例由 SSM 管理。

创建实例角色
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在控制台控制面板中,选择角色

  3. 选择创建角色

  4. 选择受信任实体的类型下,选择 Amazon Web Service。在选择使用案例下,选择 EC2。在选择您的使用案例下,选择 EC2。选择下一步:权限

  5. 搜索名为 AmazonEC2RoleforAWSCodeDeploy 的策略并将其选中。

  6. 搜索名为 AmazonSSMManagedInstanceCore 的策略并将其选中。选择下一步:标签

  7. 选择下一步:审核。输入角色的名称(例如 EC2InstanceRole)。

    注意

    记下您的角色名称以便在下一步中使用。在创建实例时选择此角色。

    选择 创建角色

启动实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在侧面导航栏中,选择实例,然后从页面顶部选择启动实例

  3. 名称中,输入 MyCodePipelineDemo。这会为实例分配标签 Name 和标签值 MyCodePipelineDemo。稍后,您将创建一个将示例 CodeDeploy 应用程序部署到此实例的应用程序。 CodeDeploy根据标签选择要部署的实例。

  4. 在 “应用程序和操作系统映像(亚马逊系统映像)” 下,找到带有 Amazon 徽标的 Amazon Linux AMI 选项,并确保将其选中。(此 AMI 称为 Amazon Linux 2 AMI (HVM),并标记为“符合免费套餐条件”。)

  5. 实例类型下,选择符合免费套餐条件的 t2.micro 类型作为实例的硬件配置。

  6. 密钥对(登录) 下,选择或创建密钥对。

    也可以选择继续操作但不提供密钥对

    注意

    在本教程中,您可以继续操作而不提供密钥对。要使用 SSH 连接到实例,请创建或使用密钥对。

  7. 网络设置下,执行以下操作:

    自动分配公有 IP 中,确保状态为启用

    • 分配安全组旁边,选择创建新安全组

    • SSH 对应的行中,在下选择我的 IP

    • 选择添加安全组,选择 HTTP,然后在源类型下选择我的 IP

  8. 展开高级详细信息。在 IAM 实例配置文件中,选择您在上一过程中创建的 IAM 角色(例如 EC2InstanceRole)。

  9. 摘要下的实例数下,输入 1

  10. 选择启动实例

  11. 您可以在实例页面上查看启动的状态。启动实例时,其初始状态为 pending。实例启动后,其状态变为 running,并且会收到一个公有 DNS 名称。(如果公有 DNS 列不显示,请选择显示/隐藏图标,然后选择公有 DNS。)

步骤 4:在中创建应用程序 CodeDeploy

在中 CodeDeploy,应用程序是一种包含要部署的软件应用程序的资源。稍后,您将此应用程序与配合使用 CodePipeline ,自动将示例应用程序部署到您的 Amazon EC2 实例。

首先,创建一个允许执行部署 CodeDeploy 的角色。然后,您将创建一个 CodeDeploy 应用程序。

创建 CodeDeploy 服务角色
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在控制台控制面板中,选择角色

  3. 选择创建角色

  4. 选择受信任实体下,选择 Amazon Web Service。在 Use case(使用案例)下,选择 CodeDeployCodeDeploy从列出的选项中进行选择。选择下一步AWSCodeDeployRole 托管策略已附加到角色。

  5. 选择下一步

  6. 输入角色的名称(例如 CodeDeployRole),然后选择创建角色

要在中创建应用程序 CodeDeploy
  1. 打开 CodeDeploy 控制台,网址为 https://console.aws.amazon.com/codedeploy

  2. 如果未显示应用程序页面,请在菜单上选择应用程序

  3. 选择创建应用程序

  4. 应用程序名称中,输入 MyDemoApplication

  5. Compute Platform(计算平台)中,选择 EC2/On-premises(EC2/本地)

  6. 选择创建应用程序

在中创建部署组 CodeDeploy

部署组是定义了部署相关设置(例如,要部署到哪些实例以及部署它们的速度有多快)的资源。

  1. 在显示应用程序的页面上,选择创建部署组

  2. Deployment group name(部署组名称)中,输入 MyDemoDeploymentGroup

  3. 服务角色中,选择您之前创建的服务角色的 ARN(例如,arn:aws:iam::account_ID:role/CodeDeployRole)。

  4. 部署类型下,选择就地

  5. 环境配置下,选择 Amazon EC2 实例。在字段中,输入 Name。在字段中,输入您用于标记实例的名称(例如,MyCodePipelineDemo)。

  6. 在 “使用 S Amazon ystems Manager 配置代理” 下,选择 “立即并安排更新”。这将在实例上安装代理。Linux 实例已经配置了 SSM 代理,现在将使用 CodeDeploy 代理进行更新。

  7. 部署配置中,选择 CodeDeployDefault.OneAtaTime

  8. 负载均衡器下,确保未选中启用负载均衡。您无需为此示例设置负载均衡器或选择目标组。

  9. 选择 Create deployment group(创建部署组)

第 5 步:在中创建您的第一个管道 CodePipeline

现在您已经可以创建并运行您的第一个管道。在此步骤中,您将创建一个在代码推送到 CodeCommit 存储库时自动运行的管道。

创建 CodePipeline 管道
  1. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    打开 CodePipeline 控制台,网址为 https://console.aws.amazon.com/codepipeline/

  2. 选择创建管道

  3. 步骤 1:选择管道设置管道名称中,输入 MyFirstPipeline

  4. 在本教程中,为管道类型选择 V1。也可以选择 V2;但请注意,不同管道类型具有不同的特性和价格。有关更多信息,请参阅 管道类型

  5. 服务角色中,选择新建服务角色 CodePipeline 以允许在 IAM 中创建服务角色。

  6. 高级设置中的各项设置保留为默认值,然后选择下一步

  7. 步骤 2:添加源舞台中,在源提供程序中,选择CodeCommit。在存储库名称中,选择您在中创建的 CodeCommit 存储库的名称步骤 1:创建 CodeCommit 存储库。在分支名称中,选择 main,然后选择下一步

    选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon Ev CloudWatch ents 规则。

    更改检测选项下面,保留默认值。这 CodePipeline 允许使用 Amazon E CloudWatch vents 来检测源存储库中的更改。

    选择下一步

  8. 步骤 3:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。选择下一步

    注意

    在本教程中,您将部署不需要生成服务的代码,因此您可以跳过此步骤。但是,如果您的源代码需要在部署到实例之前进行构建,则可以在此步骤CodeBuild中进行配置。

  9. 步骤 4:添加部署阶段中,在部署提供程序中,选择CodeDeploy。在应用程序名称中,选择 MyDemoApplication。在部署组中,选择 MyDemoDeploymentGroup,然后选择下一步

  10. 步骤 5:审核中,查看信息,然后选择创建管道

  11. 创建管道后它会开始运行。它会从您的 CodeCommit存储库下载代码并创建到您的 EC2 实例的 CodeDeploy 部署。当 CodePipeline 示例将网页部署到部署中的 Amazon EC2 实例时,您可以查看进度以及成功和失败消息。 CodeDeploy

    CodePipeline 控制台中开始运行的管道视图。

恭喜您!您刚刚在中创建了一个简单的管道 CodePipeline。

接下来,您将验证结果。

验证您的管道是否成功运行
  1. 查看管道的初始进度。每个阶段的状态将从还没有任何执行变为正在进行,然后变为 成功失败。管道将在几分钟内完成首次运行。

  2. 在管道状态显示成功后,在 “部” 阶段的状态区域中选择CodeDeploy。这将打开 CodeDeploy 控制台。如果未显示成功,请参阅 故障排除 CodePipeline

  3. 部署选项卡上,选择部署 ID。在部署页面上的部署生命周期事件下,选择实例 ID。此操作将打开 EC2 控制台。

  4. 描述选项卡上的公有 DNS 中,复制地址(例如,ec2-192-0-2-1.us-west-2.compute.amazonaws.com),然后将其粘贴到 Web 浏览器的地址栏中。

    将显示您下载并推送到 CodeCommit 存储库的示例应用程序的网页。

有关阶段和操作以及管道如何工作的更多信息,请参阅CodePipeline 概念

第 6 步:修改 CodeCommit 仓库中的代码

您的管道配置为在 CodeCommit仓库发生代码更改时运行。在此步骤中,您将对作为 CodeCommit 存储库中示例 CodeDeploy应用程序一部分的 HTML 文件进行更改。当您推送这些更改时,您的管道会再次运行,并且您作出的更改将在您之前访问的网址中显示。

  1. 将目录更改为本地存储库:

    (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
  2. 使用文本编辑器修改 index.html 文件:

    (For Linux or Unix)gedit index.html (For OS X)open –e index.html (For Windows)notepad index.html
  3. 修订 index.html 文件的内容,以更改网页的背景颜色和一些文本,然后保存该文件。

    <!DOCTYPE html> <html> <head> <title>Updated Sample Deployment</title> <style> body { color: #000000; background-color: #CCFFCC; font-family: Arial, sans-serif; font-size:14px; } h1 { font-size: 250%; font-weight: normal; margin-bottom: 0; } h2 { font-size: 175%; font-weight: normal; margin-bottom: 0; } </style> </head> <body> <div align="center"><h1>Updated Sample Deployment</h1></div> <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div> <div align="center"> <p>Learn more:</p> <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p> </div> </body> </html>
  4. 通过运行以下命令逐一提交更改并将其推送到 CodeCommit 存储库:

    git commit -am "Updated sample application files"
    git push
验证您的管道是否已成功运行
  1. 查看管道的初始进度。每个阶段的状态将从还没有任何执行变为正在进行,然后变为 成功失败。管道应在几分钟内完成运行。

  2. 操作状态显示成功之后,请刷新您之前在浏览器中访问的演示页面。

    此时将显示更新后的网页。

步骤 7:清理资源

您可以将在本教程中创建的一些资源用于本指南中的其他教程。例如,您可以重复使用 CodeDeploy 应用程序和部署。但是,在完成本教程和任何其他教程之后,您应该删除管道及其使用的资源,以避免为继续使用这些资源付费。首先,删除管道,然后删除 CodeDeploy 应用程序及其关联的 Amazon EC2 实例,最后删除 CodeCommit存储库。

清理本教程中使用的资源
  1. 要清理您的 CodePipeline 资源,请按照中删除管道中的说明进行操作 Amazon CodePipeline。

  2. 要清理 CodeDeploy 资源,请按照清理部署演练资源中的说明进行操作。

  3. 要删除 CodeCommit 存储库,请按照删除存储 CodeCommit库中的说明进行操作。

步骤 8:延伸阅读

详细了解 CodePipeline 工作原理: