使用 AWS CodeCommit 和 CodeDeploy 实现代码部署自动化
已发表: 2022-03-25作为一名 Web 开发人员,您的工作可能包括几个复杂的任务,例如到生产服务器的代码部署自动化,或者如果您在一个小组中工作并在将代码上传到实时网站时遇到问题,那么这篇博文是克服所有这些问题的解决方案问题。
使用 FTP 时,您必须覆盖您的共同开发人员的代码,这是一个很常见的问题,并且发生在我们大多数人身上。 本指南将向您展示使用 AWS CodeCommit、CodeDeploy 和 Pipeline 服务实现代码部署自动化。
技术概述:
- AWS CodeCommit :我们将使用 CodeCommit 来维护我们的存储库(Web 内容/代码文件),该存储库将保存所有项目文件和提交日志。
- EC2 服务器:我们将使用 EC2 作为我们的生产服务器,它将包含您的网站访问者的实时站点和代码。
- AWS CodeDeploy :它将保存应用程序以将您的代码发布到 EC2 服务器。 我们还将创建一个部署组,该组将保存我们希望在其中发布代码的目标 EC2 实例的名称/标签。
- Pipeline :我们将选择 CodeCommit 作为我们的源,并选择 CodeDeploy 作为我们的部署阶段。 因此,只要在 CodeCommit 中检测到任何代码更改,管道就会运行并将这些代码更改推送到 CodeDeploy(EC2 实例)。
代码部署自动化:详细解释:
为代码部署自动化创建 IAM 和 Git 用户
我们首先需要创建一个 IAM 用户和 Git 用户,它们将更改代码并将其发布到部署服务器上。
- 创建 IAM 用户
- 允许访问:AWSCodeCommitFullAccess、AWSCodeDeployFullAccess、AWSCodeCommitPowerUser。 您将在“直接附加现有策略”选项卡中找到此选项。
- 现在,使用此 IAM 用户登录。
- 单击右上角的安全凭据。
- 单击AWS CodeCommit 凭证选项卡。
- 在“AWS CodeCommit 的 HTTPS Git 凭证”部分下,单击“生成凭证”按钮。
- 现在,将该用户名和密码复制到安全的地方。 这将是您的 Git 用于推送/拉取代码更改的主要用户名和密码。
在 CodeCommit 中创建存储库
现在,让我们创建一个存储库来保存您的确切代码。
- 从 IAM 用户转到CodeCommit 仪表板。
- 在右上角,选择您要创建存储库的区域。
- 单击创建存储库,为其命名,描述,然后单击创建。
- 在“克隆存储库”部分下,您将看到存储库的 URL。 将其保存在安全的地方。 它看起来像: https ://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
首次上传项目文件
- 打开原始代码所在的本地系统的命令提示符。
- 在命令提示符下,导航到代码所在的路径。
- 现在,运行以下命令首次将您的代码推送到 AWS 存储库:
混帐初始化
git config –local init.defaultBranch main
git config –global init.defaultBranch main
混帐添加。 ## 这将提交项目的所有文件
git commit –m “初始提交”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- 创建 EC2 实例并安装 CodeDeploy 代理
- 创建实例角色
- 打开您的 AWS IAM 控制台。
- 转到角色选项卡>>创建角色。
- 在选择受信任实体的类型下,选择AWS 服务。 在“选择用例”下,选择 EC2 。 在“选择您的用例”下,选择 EC2。 选择下一步:权限。
- 搜索并选择名为AmazonEC2RoleforAWSCodeDeploy的策略,然后选择 Next: Tags 。
- 选择下一步:查看。 输入角色的名称(例如EC2InstanceRole )并单击Create 。
- 创建 EC2 实例
- 转到 EC2 控制台。 单击启动实例。
- 选择一个 Amazon 系统映像 (AMI),找到Amazon Linux 2 AMI (HVM)、SSD 卷类型,然后选择选择。 (此 AMI 标记为“符合免费层级”,可在列表顶部找到。)
- 选择 Instance Type页面,选择符合免费套餐条件的 t2.micro 类型作为您的实例的硬件配置,然后选择Next: Configure Instance Details 。
- 配置实例详细信息页面,执行以下操作:
- 在实例数中,输入 1 。
- 在自动分配公共 IP 中,选择启用。
- 在 IAM 角色中,选择您在上一个过程中创建的 IAM 角色(例如EC2InstanceRole )。
- 展开Advanced Details ,然后在 User data 字段中,输入以下内容:
#!/bin/bash
yum -y 更新
yum install -y ruby
百胜安装 -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./安装
./安装自动
- 保留步骤 3:配置实例详细信息页面上的其余项目不变。 选择下一步:添加存储。
- 保持步骤 4:添加存储页面不变,然后选择下一步:添加标签。
- 选择添加标签。 在 Key 中,输入Name ,在 Value 中,输入MyCodePipelineDemo 。 选择下一步:配置安全组。 稍后,您创建一个 CodeDeploy 应用程序,将示例应用程序部署到此实例。 CodeDeploy 根据附加到实例的标签选择要部署的实例。
- 配置安全组页面,执行以下操作:
- 在分配安全组旁边,选择创建新安全组。
- 在SSH行中的Source下,选择My IP 。
- 选择Add Rule ,选择HTTP ,然后在Source下,选择My IP
- 选择查看并启动。
- 在Review Instance Launch 页面上,选择 Launch。 当提示输入密钥对时,选择 ' Proceed without a key pair' 。
- 选择View Instances以关闭确认页面并返回控制台。
- 您可以在Instances页面查看启动状态。 当您启动一个实例时,它的初始状态是“待定”。 实例启动后,其状态更改为“正在运行”,并收到一个公共 DNS 名称。 (如果未显示Public DNS列,请选择Show/Hide 图标,然后选择Public DNS 。)
- 实例可能需要几分钟才能准备好连接到它。 查看状态检查列中的信息以查看您的实例是否已通过状态检查。

在 CodeDeploy 中创建应用程序
- 创建 CodeDeploy 服务角色
- 在 https://console.aws.amazon.com/iam/ 打开 IAM 控制台
- 从控制台仪表板中,选择Roles 。
- 选择创建角色。
- 在选择受信任实体的类型下,选择AWS 服务。 在选择一个用例下,选择CodeDeploy 。 在选择您的用例下,选择 CodeDeploy。 选择下一步:权限。 AWSCodeDeployRole托管策略已附加到该角色。
- 选择下一步:标签和下一步:审核。
- 输入角色的名称(例如 CodeDeployRole),然后选择创建角色。
- 在 CodeDeploy 中创建应用程序
- 在 https://console.aws.amazon.com/codedeploy 打开 CodeDeploy 控制台
- 如果“应用程序”页面未出现,请在菜单上选择“应用程序”。
- 选择创建应用程序。
- 在应用程序名称中,输入MyDemoApplication 。
- 在计算平台中,选择EC2/On-premises 。
- 选择创建应用程序。
- 在 CodeDeploy 中创建部署组
- 在显示您的应用程序的页面上,选择创建部署组。
- 在部署组名称中,输入MyDemoDeploymentGroup 。
- In-Service Role,选择您之前创建的服务角色(例如CodeDeployRole )。
- 在部署类型下,选择就地。
- 在Environment configuration下,选择Amazon EC2 Instances。 在 Key 字段中,输入Name 。 在值字段中,输入您用于标记实例的名称(例如, MyCodePipelineDemo )。
- 在部署配置下,选择CodeDeployDefault.OneAtaTime 。
- 在负载均衡器下,确保未选中启用负载均衡。 您无需为此示例设置负载均衡器或选择目标组。
- 展开高级部分。 在警报下,如果列出任何警报,请选择忽略警报配置。
- 选择创建部署组。
创建管道
- 创建管道
- 登录 AWS 管理控制台并在 http://console.aws.amazon.com/codesuite/codepipeline/home 打开 CodePipeline 控制台
- 在 https://console.aws.amazon.com/codepipeline/ 打开 CodePipeline 控制台
- 选择创建管道。
- 在Step 1 : Select pipeline settings 中,在 Pipeline name 中输入MyFirstPipeline 。
- 在服务角色中,选择新服务角色以允许 CodePipeline在 IAM中创建服务角色。
- 将高级设置下的设置保留为默认设置,然后选择下一步。
- 在 Step 2 : Add source stage 中,在 Source provider 中,选择CodeCommit 。
在存储库名称中,选择您在步骤 1:创建 CodeCommit 存储库中创建的 CodeCommit 存储库的名称。 在分支名称中,选择 main,然后选择 Next step。 - 选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon CloudWatch Events 规则。
- 在“更改检测”选项下,保留默认值。 这允许 CodePipeline 使用 Amazon CloudWatch Events 来检测源存储库中的更改。
- 选择下一步。
- 在 Step 3 : Add build stage 中,选择Skip build stage ,然后再次选择 Skip接受警告消息。 选择下一步。
注意:在本教程中,您正在部署需要无构建服务的代码,因此您可以跳过此步骤。 但是,如果您的源代码需要在部署到实例之前进行构建,您可以在此步骤中配置 CodeBuild。
- 在 Step 4 : Add deploy 阶段,在 Deploy provider 中,选择CodeDeploy 。
在应用程序名称中,选择MyDemoApplication 。 在部署组中,选择MyDemoDeploymentGroup ,然后选择Next step 。 - 在第 5 步:查看信息,然后选择创建管道。
- 管道在创建后开始运行。 它从您的 CodeCommit 存储库下载代码,并为您的 EC2 实例创建一个 CodeDeploy 部署。 当 CodePipeline 示例将网页部署到 CodeDeploy 部署中的 Amazon EC2 实例时,您可以查看进度、“成功”和“失败”消息。
你现在都准备好了! 转到部署⇒部署。 您将看到所有成功部署和失败部署的日志。
要验证站点上的更改,请打开您的 EC2 实例,搜索您的公共 DNS,它将显示为: http ://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com 。
浏览它后,您将看到您的实时页面。
您已成功完成代码部署自动化。 您现在可以将新的代码更改推送到您的存储库并自动将它们发布到您的站点上。 如果您仍然遇到任何问题,请随时在此处发表评论。