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

概述

在实战中,我们可以结合使用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,我们可以实现高效、可靠和可重复的代码部署流程,提高开发团队的生产力和应用程序交付的速度。

相关推荐
hummhumm1 分钟前
第 36 章 - Go语言 服务网格
java·运维·前端·后端·python·golang·java-ee
凡人的AI工具箱4 分钟前
40分钟学 Go 语言高并发:Pipeline模式(一)
开发语言·后端·缓存·架构·golang
南鸳61035 分钟前
Scala:根据身份证号码,输出这个人的籍贯
开发语言·后端·scala
小扳1 小时前
微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
java·运维·分布式·后端·spring·微服务·架构
ᝰꫝꪉꪯꫀ3611 小时前
JavaWeb——SpringBoot原理
java·开发语言·后端·springboot
LLLibra1461 小时前
如何使用Postman优雅地进行接口自动加密与解密
后端
LightOfNight1 小时前
Redis设计与实现第14章 -- 服务器 总结(命令执行器 serverCron函数 初始化)
服务器·数据库·redis·分布式·后端·缓存·中间件
刽子手发艺1 小时前
云服务器部署springboot项目、云服务器配置JDK、Tomcat
java·后端·部署
White graces2 小时前
Spring MVC练习(前后端分离开发实例)
java·开发语言·前端·后端·spring·java-ee·mvc
kingwebo'sZone5 小时前
ASP.net WebAPI 上传图片实例(保存显示随机文件名)
后端·asp.net