从开发者角度来看,CodeDeploy
按如下方式运行:
用户将更新的、可部署的应用提交到GitHub或S3
这个动作同时触发事件给CodeDeploy
每台EC2机器上运行CodeDeploy agent
,这个agent持续从CodeDeploy
polling部署任务,如果检测到有更新,则触发新的部署
EC2从S3或GitHub中拉取到appspec.yml
+ 新版本应用。EC2根据appspec.yml
里的指令,进行部署。部署完后,将部署成功或失败的信息上报。
CodeDeploy agent是开源的: https://github.com/aws/aws-codedeploy-agent
这个agent基于poll机制从CodeDeploy中拉取最新的部署,默认拉取时间间隔是1s:
参考: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-agent-configuration.html
从运维人员的角度来说,使用CodeDeploy时要经过以下步骤:
首先创建一个应用(application
),
在应用下创建部署组(deployment group
), 里面根据EC2标签或ASG名称,来决定将应用部署到哪些机器上。一个应用下可以创建多个部署组,比如Prod
和Dev
,以在部署时决定将应用部署到哪些机器上。
创建部署组时,同时指定以何种部署配置(deployment configuration
)来部署,例如同时在一半机器上部署,或同时只能在一台机器上进行部署:
将新版本的应用上传到S3或GitHub
进行部署(deployment
)。CodeDeploy拉取新版本应用,并使用里面的appspec.yml
文件来进行步骤
观察结果, 决定是否重新部署或回滚到上一版本