Jenkins 触发的代码部署在 ApplicationStop 步骤失败,即使直接通过代码部署的相同部署组成功 运行
Jenkins triggered code deploy is failing at ApplicationStop step even though same deployment group via code deploy directly is running successfully
当我通过 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 实例上使用不同的代码部署 "application" 和 "deployment group",并且也直接使用 jenkins 和代码部署进行部署。为了解决一些问题(据称由于部署失败而不允许覆盖现有文件),我删除了 /opt/codedeploy-agent/deployment-root/<directory containing deployments>
目录中的所有内容,试图按照 this answer 中提到的内容进行操作。但是,请注意,我只删除了该目录中的项目。此后,我开始收到此错误 appspec.yml not found in deployment archive。所以,然后我创建了一个新的应用程序和部署组,从那时起,我就致力于此。
因此,要考虑的另一点是,如果 jenkins 触发的部署仍然受到这些删除的影响(即使它指的是新的应用程序和部署组),我是否应该做一些进一步的清理。
为了进行部署,捆绑包需要包含一个 appspec.yml 文件,并且该文件需要放在顶层目录中。错误消息似乎是由于主机代理找不到 appspec.yml 文件。
作为其流程的一部分,CodeDeploy 需要为 Redeployments and Deployment Rollbacks 操作参考以前的部署。这些引用保存在部署存档文件夹之外。如果您按照您的指示手动删除这些存档,则 CodeDeploy 安装可能会受到致命损坏:对先前部署的引用不再正确或一致,并且部署将失败。
此时最好的办法是完全删除旧安装,然后重新安装。这将使代码部署代理再次正常工作。
我学会了不 remove/modify 任何 CodeDeploy 手动安装文件夹或文件的艰难方法。即使您更改应用程序或部署组,CodeDeploy 也会自行解决,无需任何手动清理。
当我通过 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 实例上使用不同的代码部署 "application" 和 "deployment group",并且也直接使用 jenkins 和代码部署进行部署。为了解决一些问题(据称由于部署失败而不允许覆盖现有文件),我删除了 /opt/codedeploy-agent/deployment-root/<directory containing deployments>
目录中的所有内容,试图按照 this answer 中提到的内容进行操作。但是,请注意,我只删除了该目录中的项目。此后,我开始收到此错误 appspec.yml not found in deployment archive。所以,然后我创建了一个新的应用程序和部署组,从那时起,我就致力于此。
因此,要考虑的另一点是,如果 jenkins 触发的部署仍然受到这些删除的影响(即使它指的是新的应用程序和部署组),我是否应该做一些进一步的清理。
为了进行部署,捆绑包需要包含一个 appspec.yml 文件,并且该文件需要放在顶层目录中。错误消息似乎是由于主机代理找不到 appspec.yml 文件。
作为其流程的一部分,CodeDeploy 需要为 Redeployments and Deployment Rollbacks 操作参考以前的部署。这些引用保存在部署存档文件夹之外。如果您按照您的指示手动删除这些存档,则 CodeDeploy 安装可能会受到致命损坏:对先前部署的引用不再正确或一致,并且部署将失败。
此时最好的办法是完全删除旧安装,然后重新安装。这将使代码部署代理再次正常工作。
我学会了不 remove/modify 任何 CodeDeploy 手动安装文件夹或文件的艰难方法。即使您更改应用程序或部署组,CodeDeploy 也会自行解决,无需任何手动清理。