实战AWS CodePipeline 实现代码部署自动化

2 阅读4分钟

概述

在实战中,我们可以结合使用AWS CodePipeline和AWS CodeDeploy,实现代码部署的自动化。特别是针对运行Windows Server操作系统的Amazon EC2实例队列,我们可以利用这两项服务来实现Windows服务应用程序的自动部署。

AWS CodePipeline是一项全托管的持续交付服务,它可以帮助我们快速构建、测试和部署应用程序。通过创建一个由多个阶段组成的流水线,我们可以定义代码的获取、构建、测试和部署等步骤,并自动触发每个阶段的操作。

AWS CodeDeploy则是一项可靠的应用部署服务,它可以帮助我们自动化部署应用程序到Amazon EC2实例上。我们可以配置CodeDeploy来指定部署组、部署类型(例如,原地部署或蓝绿部署)以及其他部署选项。

结合使用CodePipeline和CodeDeploy,我们可以设置一个流水线,使得每次有新的代码提交或更新时,自动触发构建、测试和部署操作。CodePipeline将负责从代码存储库中拉取代码并触发构建,然后将构建产物传递给CodeDeploy进行部署。CodeDeploy会根据我们的配置将应用程序部署到预定义的EC2实例队列上。

目标

  • 使用 AWS Cloud9 打包应用程序代码并将修订上传到 Amazon S3 存储桶。
  • 将 Amazon S3 作为源代码阶段,AWS CodeDeploy 作为部署阶段,构建一个多阶段 AWS CodePipeline。
  • 查看部署配置并使用 AWS CodeDeploy 执行自动代码部署。
  • 使用 AWS Systems Manager Session Manager 验证自动部署是否成功。

场景

在有关 CodeDeploy ,是为 Windows 应用程序设置一个 CodeDeploy 应用程序和部署组。通过 AWS 命令行界面 (AWS CL) 或 AwS CodeDeploy web 控制台操作,您的开发团队已使用此架构将应用程序和后续更新部署到了 Amazon Elastic Compute cloud (Amazon EC2) 队列中。但是,通过AWSCLI或 web控制台部署代码仍然是一个手动过程。与针对单个实例执行手动部署相比,以编程方式在队列中部署代码的速度会更快,且更不容易出错。利用 AwS CodePipeline 服务,使通过 AwS CodeDeploy 进行的这一手动部署进一步实现自动化。

img

实战

查看已配置的AWS codeDeploy应用程序

img

准备应用程序代码以进行部署

对于此任务,我们已为您提供已启用版本控制的 Amazon Simple Storage Service (Amazon S3)存储桶。此存储桶是后续任务中针对 EC2 队列的 AwS CodePipeline 自动部署的源位置。您将在此 Amazon S3 存储桶中存储 HeartBeatProduction-App 对象。AwS CodePlpeline 随后会将此 Amazon S3 存储桶中的对象部署到目标 EC2队列中。与有关 AwS CodeDeploy 的实验2 不同,您将不会直接使用 CodeDeploy 來完成应用程序部署。您不再需要执行从命令行注册和运行部署的步骤。

打开cloud9

测试url

img

  • 创建region变量
myRegion=$(curl http://169.254.169.254/latest/meta-data/placement/region)

img

wget 命令中使用该变量可将 zip 文件下载到您的环境中。

wget https://$myRegion-tcprod.s3.amazonaws.com/courses/ILT-TF-200-DEVOPS/v3.2.3.prod-d89ba981/lab-3-CodePipeline/bundles/CodeDeployHeartbeatDemo.zip -P CodeDeployHeartbeatDemo

img

运行以下命令,在您的账户中查找名称中包含 applicationsourcebucket 的存储桶。

img

运行以下命令以创建具有该存储桶名称的变量。

aws s3 cp ~/environment/CodeDeployHeartbeatDemo/CodeDeployHeartbeatDemo.zip s3://$myAppSrcBucket/HeartBeat-App.zip

预期输出:您的存储桶名称将与下面显示的示例不同。

img

创建 AWS CodePipeline

创建管道设置

img

添加源阶段

img

添加部署阶段

img

验证CodePipeline部署

验证 HEARTBEAT-APP 部署

img

链接目标服务器运行cli查看是否部署成功

Service “AWSHeartbeat*”

预期输出

img

Content C:\Logs\HeartBeatService.log -last 10

img

更改HeartBeatProduction-App 源代码

检索已更新的应用程序并将其上传到 AMAZON S3 应用程序源存储桶中

aws s3 cp s3://$myRegion-tcprod/courses/ILT-TF-200-DEVOPS/v3.2.3.prod-d89ba981/lab-3-CodePipeline/bundles/updated-HeartBeat-App.zip s3://$myAppSrcBucket/HeartBeat-App.zip

预期输出

img

在 AWS CODEPIPELINE 控制台中监看部署

img

img

img

总结

使用AWS CodePipeline和AWS CodeDeploy的组合可以实现代码部署的自动化。通过创建CodePipeline流水线,我们可以定义代码获取、构建、测试和部署等阶段,并自动触发每个阶段的操作。CodeDeploy负责将应用程序部署到Amazon EC2实例队列上,并根据配置进行部署类型的选择。这种自动化的部署过程减少了人工操作和减少了错误的风险。同时,通过集成的监控和可视化功能,我们可以实时跟踪部署的状态和日志信息,方便及时发现和解决问题。借助AWS CodePipeline和CodeDeploy,我们可以实现高效、可靠和可重复的代码部署流程,提高开发团队的生产力和应用程序交付的速度。