概述
在实战中,我们可以结合使用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 进行的这一手动部署进一步实现自动化。
实战
查看已配置的AWS codeDeploy应用程序
准备应用程序代码以进行部署
对于此任务,我们已为您提供已启用版本控制的 Amazon Simple Storage Service (Amazon S3)存储桶。此存储桶是后续任务中针对 EC2 队列的 AwS CodePipeline 自动部署的源位置。您将在此 Amazon S3 存储桶中存储 HeartBeatProduction-App 对象。AwS CodePlpeline 随后会将此 Amazon S3 存储桶中的对象部署到目标 EC2队列中。与有关 AwS CodeDeploy 的实验2 不同,您将不会直接使用 CodeDeploy 來完成应用程序部署。您不再需要执行从命令行注册和运行部署的步骤。
打开cloud9
测试url
- 创建region变量
Shell
myRegion=$(curl http://169.254.169.254/latest/meta-data/placement/region)
wget 命令中使用该变量可将 zip 文件下载到您的环境中。
Plaintext
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
运行以下命令,在您的账户中查找名称中包含 applicationsourcebucket 的存储桶。
运行以下命令以创建具有该存储桶名称的变量。
Plaintext
aws s3 cp ~/environment/CodeDeployHeartbeatDemo/CodeDeployHeartbeatDemo.zip s3://$myAppSrcBucket/HeartBeat-App.zip
预期输出:您的存储桶名称将与下面显示的示例不同。
创建 AWS CodePipeline
创建管道设置
添加源阶段
添加部署阶段
验证CodePipeline部署
验证 HEARTBEAT-APP 部署
链接目标服务器运行cli查看是否部署成功
Plaintext
Service "AWSHeartbeat*"
预期输出:
bash
Content C:\Logs\HeartBeatService.log -last 10
更改HeartBeatProduction-App 源代码
检索已更新的应用程序并将其上传到 AMAZON S3 应用程序源存储桶中
Plaintext
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
预期输出:
在 AWS CODEPIPELINE 控制台中监看部署
总结
使用AWS CodePipeline和AWS CodeDeploy的组合可以实现代码部署的自动化。通过创建CodePipeline流水线,我们可以定义代码获取、构建、测试和部署等阶段,并自动触发每个阶段的操作。CodeDeploy负责将应用程序部署到Amazon EC2实例队列上,并根据配置进行部署类型的选择。这种自动化的部署过程减少了人工操作和减少了错误的风险。同时,通过集成的监控和可视化功能,我们可以实时跟踪部署的状态和日志信息,方便及时发现和解决问题。借助AWS CodePipeline和CodeDeploy,我们可以实现高效、可靠和可重复的代码部署流程,提高开发团队的生产力和应用程序交付的速度。