一尘不染

Jenkins触发的代码部署在ApplicationStop步骤失败,即使通过代码部署直接进行的相同部署组已成功运行

jenkins

通过Jenkins(代码部署插件)触发时,出现以下错误-

 No such file or directory - /opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-8C01LCBMG/deployment-archive/appspec.yml

但是,如果我直接通过代码部署触发部署到同一部署组中,并在S3中指定相同的zip(通过Jenkins触发器获得),则此步骤通过。

这是什么意思,我如何找到解决方法?我目前正在整合一些东西,因此需要同时通过代码部署和Jenkins进行部署。当我需要确保较小的单元运行正常时,我将运行代码部署触发的部署。

更新资料

只要提及另一点,以防万一。以前,我在同一ec2实例上使用不同的codedeploy“应用程序”和“
deployment组”,并且还直接使用jenkins和代码部署。为了解决某些问题(据称由于部署失败,不允许覆盖现有文件),我删除了/opt/codedeploy-agent/deployment-root/<directory containingdeployments>目录中的所有内容,试图按照此答案中提到的内容进行操作。但是,请注意,我只删除了该目录中的项目。此后,我开始在部署档案中找不到此错误appspec.yml。因此,然后我创建了一个新的应用程序和部署组,从那时起,我就开始研究它。

因此,要考虑的另一点是,如果jenkins触发的部署仍然受到这些删除的影响(即使它是指新的应用程序和部署组),我是否应该做进一步的清理。


阅读 299

收藏
2020-07-25

共1个答案

一尘不染

作为其过程的一部分,CodeDeploy需要引用以前的部署以进行重新部署和部署回滚操作。这些引用在部署存档文件夹之外维护。如果按照指示手动删除这些存档,则CodeDeploy安装可能会严重损坏:以前部署的引用不再正确或不一致,并且部署将失败。

此时最好的办法是完全删除旧的安装,然后重新安装。这将使代码部署代理能够再次正常工作。

我已经学会了不手动删除/修改 任何
CodeDeploy安装文件夹或文件的艰难方法。即使更改应用程序或部署组,CodeDeploy也会自行解决,而无需进行任何手动清理。

2020-07-25