本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建简单的管道(CodeCommit存储库)
在本教程中,您将使用 CodePipeline 将 CodeCommit 存储库中维护的代码部署到单个 Amazon EC2 实例。当您将更改推送到 CodeCommit 存储库时,您的管道就会被触发。管道使用 CodeDeploy 作为部署服务将您的更改部署到 Amazon EC2 实例。
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 Amazon Web Services 账户 ,该存储桶是安全且可靠的。
管道具有两个阶段:
-
源操作的源阶段( CodeCommit 来源)。
-
您的部署操作的部署阶段( CodeDeploy 部署)。
最简单的入门方法 Amazon CodePipeline 是在 CodePipeline 控制台中使用创建管道向导。
注意
在开始之前,请确保已设置好要使用的 Git 客户端 CodeCommit。有关说明,请参阅设置 CodeCommit。
步骤 1:创建 CodeCommit 存储库
首先,在中创建存储库 CodeCommit。您的管道在运行时将从该存储库获取源代码。您还可以创建一个本地存储库,在将代码推送到存储 CodeCommit 库之前,在其中维护和更新代码。
创建存储 CodeCommit 库
-
打开 CodeCommit 控制台,网址为https://console.aws.amazon.com/codecommit/
。 -
在区域选择器中,选择要创建存储库和管道 Amazon Web Services 区域 的位置。有关更多信息,请参阅Amazon Web Services 区域 和端点。
-
在存储库页面上,选择创建存储库。
-
在创建存储库页面上的存储库名称中,输入存储库的名称(例如,
MyDemoRepo
)。 -
选择创建。
注意
本教程的其余步骤将使用MyDemoRepo
存储 CodeCommit 库的名称。如果您选择其他名称,请确保在本教程中通篇使用它。
设置本地存储库
在此步骤中,您将设置本地存储库以连接到您的远程 CodeCommit存储库。
注意
您无需设置本地存储库。还可以使用此控制台上传文件(如第 2 步:向 CodeCommit 存储库中添加示例代码所述)。
-
在控制台中打开新存储库后,选择页面右URL上角的 “克隆”,然后选择 “克隆” SSH。用于克隆 Git 存储库的地址复制到您的剪贴板。
-
在您的终端窗口或命令行中,导航到您要用来存储本地存储库的本地目录。在本教程中,我们使用
/tmp
。 -
运行以下命令来克隆存储库,将该SSH地址替换为您在上一步中复制的地址。此命令创建一个名为
MyDemoRepo
的目录。您将示例应用程序复制到此目录。git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo
第 2 步:向 CodeCommit 存储库中添加示例代码
在此步骤中,您将下载为示例演练创建的 CodeDeploy示例应用程序的代码,并将其添加到 CodeCommit 存储库中。
-
接下来,下载一个示例,并将该示例保存到本地计算机上的文件夹或目录中。
-
选择以下选项之一。如果要对 Linux 实例执行本教程中的步骤,请选择
SampleApp_Linux.zip
。-
如果您想使用部署到亚马逊 Linux 实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Linux.zip。
-
如果你想使用部署到 Windows 服务器实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Windows.zip。
示例应用程序包含以下用于部署的文件 CodeDeploy:
-
appspec.yml
— 应用程序规范文件(AppSpec文件)是用于管理部署 CodeDeploy 的YAML格式文件。有关该 AppSpec 文件的更多信息,请参阅Amazon CodeDeploy 用户指南中的CodeDeploy AppSpec 文件参考。 -
index.html
- 索引文件包含已部署的示例应用程序的主页。 -
LICENSE.txt
- 许可证文件包含示例应用程序的许可证信息。 -
脚本文件 - 示例应用程序使用脚本将文本文件写入实例上的某个位置。为多个 CodeDeploy 部署生命周期事件分别写入一个文件,如下所示:
-
(仅限 Linux 示例)
scripts
文件夹 - 该文件夹包含以下 shell 脚本,用于安装依赖项以及启动和停止自动部署的示例应用程序:install_dependencies
、start_server
和stop_server
。 -
(仅限 Windows 示例)
before-install.bat
- 此批处理脚本用于BeforeInstall
部署生命周期事件,它将运行以删除此示例在先前部署中写入的旧文件,并在您的实例上创建一个位置用于写入新文件。
-
-
-
下载压缩(zipped)文件。
-
-
将文件从 SampleApp_Linux.zip 解压缩到之前创建的本地目录(例如,
/tmp/MyDemoRepo
或c:\temp\MyDemoRepo
)。务必将文件直接放到本地存储库中。不要包括
SampleApp_Linux
文件夹。例如,在您的本地 Linux、macOS 或 Unix 计算机上,您的目录和文件层次结构应如下所示:/tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
-
要将文件上传到您的存储库,请使用以下方法之一。
-
要使用 CodeCommit 控制台上传文件,请执行以下操作:
-
打开 CodeCommit 控制台,然后从 “存储库” 列表中选择您的存储库。
-
选择添加文件,然后选择上传文件。
-
选择选择文件,然后浏览找到您的文件。要在文件夹下添加文件,请选择创建文件,然后输入带有文件名的文件夹名称,例如
scripts/install_dependencies
。将文件内容粘贴到新文件中。通过输入您的用户名和电子邮件地址来提交更改。
选择提交更改。
-
对每个文件重复此步骤。
您的存储库内容应如下所示:
│-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
-
-
使用 git 命令上传文件:
-
将目录更改为本地存储库:
(For Linux, macOS, or Unix)
cd /tmp/MyDemoRepo(For Windows)
cd c:\temp\MyDemoRepo -
运行以下命令以立即暂存您的所有文件:
git add -A
-
运行以下命令以提交带有提交消息的文件:
git commit -m "Add sample application files"
-
运行以下命令将本地存储库中的文件推送到存储 CodeCommit库:
git push
-
-
-
您下载并添加到本地存储库中的文件现已添加到 CodeCommit
MyDemoRepo
存储库的main
分支中,可以包含在管道中。
步骤 3:创建 Amazon EC2 Linux 实例并安装 CodeDeploy 代理
在此步骤中,您将创建用于部署示例应用程序的 Amazon EC2 实例。作为此过程的一部分,创建一个允许在实例上安装和管理 CodeDeploy 代理的实例角色。 CodeDeploy 代理是一个软件包,允许在 CodeDeploy 部署中使用实例。您还可以附加策略,允许实例获取 CodeDeploy 代理用于部署您的应用程序的文件,并允许该实例由其管理SSM。
创建实例角色
-
打开IAM控制台,网址为 https://console.aws.amazon.com/iam/
)。 -
在控制台控制面板中,选择角色。
-
选择创建角色。
-
在选择受信任实体的类型下,选择 Amazon Web Services 服务。在 “选择用例” 下,选择EC2。在 “选择您的用例” 下,选择EC2。选择下一步: 权限。
-
搜索名为
AmazonEC2RoleforAWSCodeDeploy
的策略并将其选中。 -
搜索名为
AmazonSSMManagedInstanceCore
的策略并将其选中。选择下一步:标签。 -
选择下一步:审核。输入角色的名称(例如
EC2InstanceRole
)。注意
记下您的角色名称以便在下一步中使用。在创建实例时选择此角色。
选择 Create role(创建角色)。
启动实例
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在侧面导航栏中,选择实例,然后从页面顶部选择启动实例。
-
在名称中,输入
MyCodePipelineDemo
。这会为实例分配标签键Name
和标签值MyCodePipelineDemo
。稍后,您将创建一个将示例 CodeDeploy 应用程序部署到此实例的应用程序。 CodeDeploy根据标签选择要部署的实例。 -
在 “应用程序和操作系统映像(亚马逊系统映像)” 下,找到带有 Amazon 徽标的 Amazon Linux AMI 选项,并确保将其选中。(这被描述AMI为 Amazon Linux 2 AMI (HVM),标有 “符合免费套餐资格” 的标签。)
-
在实例类型下,选择符合免费套餐条件的
t2.micro
类型作为实例的硬件配置。 -
在密钥对(登录) 下,选择或创建密钥对。
也可以选择继续操作但不提供密钥对。
注意
在本教程中,您可以继续操作而不提供密钥对。SSH要使用连接您的实例,请创建或使用 key pair。
-
在网络设置下,执行以下操作:
在自动分配公有 IP 中,确保状态为启用。
-
在分配安全组旁边,选择创建新安全组。
-
在 “来源类型” 行中 SSH,选择 “我的 IP”。
-
选择 “添加安全组”,选择 HTTP,然后在 “来源类型” 下选择 “我的 IP”。
-
-
展开高级详细信息。在IAM实例配置文件中,选择您在上一个过程中创建的IAM角色(例如,
EC2InstanceRole
)。 -
在摘要下的实例数下,输入
1
。 -
选择启动实例。
-
您可以在实例页面上查看启动的状态。启动实例时,其初始状态为
pending
。实例启动后,其状态更改为running
,并获得一个公共DNS名称。(如果未显示 DNS “公开” 列,请选择 “显示 /隐藏” 图标,然后选择 “公开 DNS”。)
步骤 4:在中创建应用程序 CodeDeploy
在中 CodeDeploy,应用程序是一种包含要部署的软件应用程序的资源。稍后,您将此应用程序与配合使用 CodePipeline ,自动将示例应用程序部署到您的 Amazon EC2 实例。
首先,创建一个允许执行部署 CodeDeploy 的角色。然后,您将创建一个 CodeDeploy 应用程序。
创建 CodeDeploy 服务角色
-
打开IAM控制台,网址为 https://console.aws.amazon.com/iam/
)。 -
在控制台控制面板中,选择角色。
-
选择 Create role(创建角色)。
-
在选择受信任实体下,选择 Amazon Web Services 服务。在 Use case(使用案例)下,选择 CodeDeploy。CodeDeploy从列出的选项中进行选择。选择下一步。
AWSCodeDeployRole
托管策略已附加到角色。 -
选择下一步。
-
输入角色的名称(例如
CodeDeployRole
),然后选择创建角色。
要在中创建应用程序 CodeDeploy
-
在 https://console.aws.amazon.com/codede
ploy 上打开 CodeDeploy 控制台。 -
如果未显示应用程序页面,请在菜单上选择应用程序。
-
选择创建应用程序。
-
在 Application name(应用程序名称)中,输入
MyDemoApplication
。 -
在计算平台中,选择 EC2/本地。
-
选择创建应用程序。
要在中创建部署组 CodeDeploy
部署组是定义了部署相关设置(例如,要部署到哪些实例以及部署它们的速度有多快)的资源。
-
在显示应用程序的页面上,选择创建部署组。
-
在 Deployment group name(部署组名称)中,输入
MyDemoDeploymentGroup
。 -
在服务角色中,选择您之前创建ARN的服务角色(例如
)。arn:aws:iam::
account_ID
:role/CodeDeployRole -
在部署类型下,选择就地。
-
在环境配置下,选择 Amazon EC2 实例。在键字段中,输入
Name
。在值字段中,输入您用于标记实例的名称(例如,MyCodePipelineDemo
)。 -
在 “使用 S Amazon ystems Manager 配置代理” 下,选择 “立即并安排更新”。这将在实例上安装代理。Linux 实例已经配置了SSM代理,现在将使用 CodeDeploy 代理进行更新。
-
在部署配置中,选择
CodeDeployDefault.OneAtaTime
。 -
在负载均衡器下,确保未选中启用负载均衡。您无需为此示例设置负载均衡器或选择目标组。
-
选择 Create deployment group(创建部署组)。
第 5 步:在中创建您的第一个管道 CodePipeline
现在您已经可以创建并运行您的第一个管道。在此步骤中,您将创建一个在代码推送到 CodeCommit 存储库时自动运行的管道。
创建 CodePipeline 管道
登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home
。 打开 CodePipeline 控制台,网址为https://console.aws.amazon.com/codepipeline/
。 -
选择 Create pipeline(创建管道)。
-
在步骤 1:选择管道设置的管道名称中,输入
MyFirstPipeline
。 -
在管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步。
-
在服务角色中,选择新建服务角色 CodePipeline 以允许在中创建服务角色IAM。
-
将高级设置中的各项设置保留为默认值,然后选择下一步。
-
在步骤 2:添加源舞台中,在源提供程序中,选择CodeCommit。在存储库名称中,选择您在中创建的 CodeCommit 存储库的名称步骤 1:创建 CodeCommit 存储库。在分支名称中,选择
main
,然后选择下一步。选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon Ev CloudWatch ents 规则。
在更改检测选项下面,保留默认值。这 CodePipeline 允许使用 Amazon E CloudWatch vents 来检测源存储库中的更改。
选择下一步。
-
在步骤 3:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。选择下一步。
注意
在本教程中,您将部署不需要生成服务的代码,因此您可以跳过此步骤。但是,如果您的源代码需要在部署到实例之前进行构建,则可以在此步骤CodeBuild
中进行配置。 -
在步骤 4:添加部署阶段中,在部署提供程序中,选择CodeDeploy。在应用程序名称中,选择
MyDemoApplication
。在部署组中,选择MyDemoDeploymentGroup
,然后选择下一步。 -
在步骤 5:审核中,查看信息,然后选择创建管道。
-
创建管道后它会开始运行。它会从您的 CodeCommit存储库下载代码并创建到您的EC2实例的 CodeDeploy 部署。当 CodePipeline 示例将网页部署到部署中的 Amazon EC2 实例时,您可以查看进度以及成功和失败消息。 CodeDeploy
恭喜您!您刚刚在中创建了一个简单的管道 CodePipeline。
接下来,您将验证结果。
验证您的管道是否成功运行
-
查看管道的初始进度。每个阶段的状态将从还没有任何执行变为正在进行,然后变为 成功或失败。管道将在几分钟内完成首次运行。
-
在管道状态显示成功后,在 “部署” 阶段的状态区域中选择CodeDeploy。这将打开 CodeDeploy 控制台。如果未显示成功,请参阅 故障排除 CodePipeline。
-
在部署选项卡上,选择部署 ID。在部署页面上的部署生命周期事件下,选择实例 ID。此操作将打开 EC2 控制台。
-
在 “描述” 选项卡的 “公开” 中DNS,复制地址(例如,
ec2-192-0-2-1.us-west-2.compute.amazonaws.com
),然后将其粘贴到 Web 浏览器的地址栏中。将显示您下载并推送到 CodeCommit 存储库的示例应用程序的网页。
有关阶段和操作以及管道如何工作的更多信息,请参阅CodePipeline 概念 。
第 6 步:修改 CodeCommit 仓库中的代码
您的管道配置为在 CodeCommit仓库发生代码更改时运行。在此步骤中,您将对 CodeCommit 存储库中作为示例 CodeDeploy应用程序一部分HTML的文件进行更改。当您推送这些更改时,您的管道会再次运行,并且您作出的更改将在您之前访问的网址中显示。
-
将目录更改为本地存储库:
(For Linux, macOS, or Unix)
cd /tmp/MyDemoRepo
(For Windows)
cd c:\temp\MyDemoRepo
-
使用文本编辑器修改
index.html
文件:(For Linux or Unix)
gedit index.html(For OS X)
open –e index.html(For Windows)
notepad index.html -
修订
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>
-
通过运行以下命令逐一提交更改并将其推送到 CodeCommit 存储库:
git commit -am "Updated sample application files"
git push
验证您的管道是否已成功运行
-
查看管道的初始进度。每个阶段的状态将从还没有任何执行变为正在进行,然后变为 成功或失败。管道应在几分钟内完成运行。
-
操作状态显示成功之后,请刷新您之前在浏览器中访问的演示页面。
此时将显示更新后的网页。
步骤 7:清理资源
您可以将在本教程中创建的一些资源用于本指南中的其他教程。例如,您可以重复使用 CodeDeploy 应用程序和部署。但是,在完成本教程和任何其他教程之后,您应该删除管道及其使用的资源,以避免为继续使用这些资源付费。首先,删除管道,然后删除 CodeDeploy 应用程序及其关联的 Amazon EC2 实例,最后删除 CodeCommit存储库。
清理本教程中使用的资源
-
要清理您的 CodePipeline 资源,请按照中删除管道中的说明进行操作 Amazon CodePipeline。
-
要清理 CodeDeploy 资源,请按照清理部署演练资源中的说明进行操作。
-
要删除 CodeCommit 存储库,请按照删除存储 CodeCommit库中的说明进行操作。
步骤 8:延伸阅读
详细了解 CodePipeline 工作原理:
-
有关阶段和操作以及管道如何工作的更多信息,请参阅CodePipeline 概念 。
-
有关您可以使用执行的操作的信息 CodePipeline,请参阅与动 CodePipeline 作类型的集成。
-
试用这个更高级的教程:教程:创建一个四阶段管道。它创建一个多阶段管道,包括一个在部署之前构建代码的步骤。