本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建一个简单的管道(CodeCommit 存储库)
在本教程中,您将使用 CodePipeline 将 CodeCommit 存储库中维护的代码部署到单个 Amazon EC2 实例。当您将更改推送到 CodeCommit 存储库时,您的管道就会被触发。管道使用 CodeDeploy 作为部署服务将您的更改部署到 Amazon EC2 实例。
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 AWS 账户 ,该存储桶是安全且可靠的。
管道具有两个阶段:
-
源操作的源阶段( CodeCommit 来源)。
-
您的部署操作的部署阶段( CodeDeploy 部署)。
最简单的入门方法 AWS CodePipeline 是在 CodePipeline 控制台中使用创建管道向导。
注意
在开始之前,请确保已设置好要使用的 Git 客户端 CodeCommit。有关说明,请参阅 CodeCommit 设置。
步骤 1:创建 CodeCommit 存储库
首先,在中创建存储库 CodeCommit。您的管道在运行时将从该存储库获取源代码。您还可以创建一个本地存储库,在将代码推送到存储 CodeCommit 库之前,在其中维护和更新代码。
创建存储 CodeCommit 库
-
打开 CodeCommit 控制台,网址为https://console.aws.amazon.com/codecommit/
。 -
在区域选择器中,选择要创建存储库和管道 AWS 区域 的位置。有关更多信息,请参阅AWS 区域 和端点。
-
在存储库页面上,选择创建存储库。
-
在创建存储库页面上的存储库名称中,输入存储库的名称(例如,
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文件)是一个 YAML格式的文件, CodeDeploy 用于管理部署。有关该 AppSpec 文件的更多信息,请参阅《AWS 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/
)。 -
在控制台控制面板中,选择角色。
-
选择创建角色。
-
在选择受信任实体的类型下,选择 AWS 服务。在 “选择用例” 下,选择EC2。在 “选择您的用例” 下,选择EC2。选择下一步: 权限。
-
搜索名为
AmazonEC2RoleforAWSCodeDeploy
的策略并将其选中。 -
搜索名为
AmazonSSMManagedInstanceCore
的策略并将其选中。选择下一步:标签。 -
选择下一步:审核。输入角色的名称(例如
EC2InstanceRole
)。注意
记下您的角色名称以便在下一步中使用。在创建实例时选择此角色。
选择 Create role(创建角色)。
启动实例
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在侧面导航栏中,选择实例,然后从页面顶部选择启动实例。
-
在名称中,输入
MyCodePipelineDemo
。这会为实例分配标签键Name
和标签值MyCodePipelineDemo
。稍后,您将创建一个将示例 CodeDeploy 应用程序部署到此实例的应用程序。 CodeDeploy根据标签选择要部署的实例。 -
在 “应用程序和操作系统映像(亚马逊系统映像)” 下,找到带有 AWS 徽标的 Amazon Linux AMI 选项,并确保将其选中。(此 AMI 称为 Amazon Linux 2 AMI (HVM),并标记为“符合免费套餐条件”。)
-
在实例类型下,选择符合免费套餐条件的
t2.micro
类型作为实例的硬件配置。 -
在密钥对(登录) 下,选择或创建密钥对。
也可以选择继续操作但不提供密钥对。
注意
在本教程中,您可以继续操作而不提供密钥对。要使用 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(创建角色)。
-
在选择受信任实体下,选择 AWS 服务。在 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 AWS ystems Manager 配置代理” 下,选择 “立即并安排更新”。这将在实例上安装代理。Linux 实例已经配置了 SSM 代理,现在将使用 CodeDeploy 代理进行更新。
-
在部署配置中,选择
CodeDeployDefault.OneAtaTime
。 -
在负载均衡器下,确保未选中启用负载均衡。您无需为此示例设置负载均衡器或选择目标组。
-
选择 Create deployment group(创建部署组)。
步骤 5:在 CodePipeline 中创建您的第一个管道
现在您已经可以创建并运行您的第一个管道。在此步骤中,您将创建一个在将代码推送到 CodeCommit 存储库时自动运行的管道。
创建 CodePipeline 管道
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home
。 打开 CodePipeline 控制台,网址为https://console.aws.amazon.com/codepipeline/
。 -
在欢迎页面、入门页面或管道页面上,选择创建管道。
-
在步骤 1:选择创建选项页面上的创建选项下,选择构建自定义管道选项。选择下一步。
-
在步骤 2:选择管道设置的管道名称中,输入
MyFirstPipeline
。 -
在管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步。
-
在服务角色中,选择新建服务角色 CodePipeline 以允许在 IAM 中创建服务角色。
-
将高级设置中的各项设置保留为默认值,然后选择下一步。
-
在步骤 3:添加源阶段的源提供程序中,选择 CodeCommit。在存储库名称中,选择您在中创建的 CodeCommit 存储库的名称步骤 1:创建 CodeCommit 存储库。在分支名称中,选择
main
,然后选择下一步。选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon Ev CloudWatch ents 规则。
在更改检测选项下面,保留默认值。这 CodePipeline 允许使用 Amazon E CloudWatch vents 来检测源存储库中的更改。
选择下一步。
-
在步骤 4:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。选择下一步。
注意
在本教程中,您将部署不需要生成服务的代码,因此您可以跳过此步骤。但是,如果您的源代码需要在部署到实例之前构建,则可以在此步骤中配置 CodeBuild
。 -
在 “步骤 5:添加测试阶段” 中,选择 “跳过测试阶段”,然后再次选择 “跳过”,接受警告消息。
选择下一步。
-
在步骤 6:添加部署阶段中,在部署提供程序中,选择CodeDeploy。在应用程序名称中,选择
MyDemoApplication
。在部署组中,选择MyDemoDeploymentGroup
,然后选择下一步。 -
在步骤 7:查看中,查看信息,然后选择创建管道。
-
创建管道后它会开始运行。它会从您的 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 资源,请按照中删除管道中的说明进行操作 AWS CodePipeline。
-
要清理 CodeDeploy 资源,请按照清理部署演练资源中的说明进行操作。
-
要删除 CodeCommit 存储库,请按照删除存储 CodeCommit库中的说明进行操作。
步骤 8:延伸阅读
详细了解 CodePipeline 工作原理:
-
有关阶段和操作以及管道如何工作的更多信息,请参阅CodePipeline 概念。
-
有关您可以使用执行的操作的信息 CodePipeline,请参阅与 CodePipeline 操作类型的集成。
-
试用这个更高级的教程:教程:创建一个四阶段管道。它创建一个多阶段管道,包括一个在部署之前构建代码的步骤。