首页 > 解决方案 > CodeDeploy 为下一次部署所需的每个部署创建目录。为什么以及是否有替代方法?

问题描述

我发现 CodeDeploy 正在使用“/opt/codedeploy-agent/deployment-root/#####yourNumberWillBeDifferent#####”处的日志/部署信息填充我的 EC2 实例上的磁盘空间。

每次进行部署时,都会在该位置创建另一个目录,该目录以部署 ID 命名,大约为 650M。该目录包含日志、bundle.tar 和一个部署存档文件夹,其中包含该部署所需的所有文件。经过几次部署后,我注意到我的磁盘空间因此而被用完。仅供参考 - 我正在 EC2 就地实例上执行就地部署。

接下来我发现,当部署运行时,它会在 EC2 实例中查找上一次部署运行的部署目录,并且出于某种原因需要其 AppSpec 文件。我发现这一点是因为如果我删除此目录中的所有部署文件夹,我会收到错误消息 -

''' 修订被解压到目录“/opt/codedeploy-agent/deployment-root/59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive”,AppSpec 文件是预期的,但在路径“/opt/codedeploy-agent/deployment-root/59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive/appspec.yml”'''

d-WZDFGDBHU 是在刚刚运行的部署之前执行的最后一次部署的部署 ID。

如果我删除除最新目录之外的所有目录(在本例中只保留“d-WZDFGDBHU”),则部署运行良好。

我最终要做的是每小时运行一个脚本,删除该位置的所有目录,除了最新的目录。

我不知道为什么 CodeDeploy 需要引用上次部署的这个目录,但确实如此!

有没有更好的方法来处理这个问题,还是我错误地设置了 CodeDeploy?

标签: aws-code-deploy

解决方案


对于其他遇到这种情况的人-

CodeDeploy 保留许多最后的部署,以允许您回滚到以前的版本。默认情况下,它保留最后 5 个,但这可以使用 codedeploy 代理配置进行配置: https ://docs.aws.amazon.com/codedeploy/latest/userguide/reference-agent-configuration.html

控制这个的设置是 :max_revisions:


推荐阅读