2016-08-03 18 views
1

运行当我通过詹金斯(代码部署插件)触发,我碰到下面的错误 -詹金斯触发代码部署在ApplicationStop一步失败,即使通过代码部署相同的部署组直接被成功

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“应用程序”和“部署组”,并且直接使用jenkins和代码直接部署。为了解决某个问题(据说由于部署失败,不允许覆盖现有文件),我已经删除了/opt/codedeploy-agent/deployment-root/<directory containing deployments>目录中的所有内容,试图按照this answer中提到的内容进行操作。不过请注意,我只删除了该目录内的项目。此后,我开始在部署档案中找不到错误appspec.yml。于是,我创建了一个新的应用程序和部署组,从那以后,我正在开发它。

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

+0

您可以提供一份列表/ opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-8C01LCBMG/deployment-archive的内容吗? –

+0

@RodrigoM目录'd-8C0 1LCBMG'不在'/ opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6 /'里面。这似乎是一个旧的部署ID,每次我尝试从jenkins进行构建时,它都会查找这个特定的构建。我不确定为什么当apps档案出现在zip档案中时,它会试图寻找这个。是否有可能无法在应用程序停止步骤中访问该文件,从而在存档中查找?或者,无论如何,无论如何都会看到档案内容? –

+0

宾果。请参阅下面的答案。 –

回答

3

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

此时最好的做法是彻底删除旧的安装,然后重新安装。这将允许代码部署代理再次正常工作。

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

+1

CodeDeployment主机代理当前有7个生命周期事件,而ApplicationStop生命周期引用上次成功的部署存档。所以如果最后一个成功的部署归档被删除,那么当前运行的部署将会失败。 – binbinlu

+0

好的,我明白了。我将卸载这些实例上的codedeploy,然后重新安装它们。但是,这些应用程序和部署ID是否仍然会保留在aws控制台上?另外,我有一个印象,为了在一个实例上安装codedeploy,它需要在第一次启动实例时完成。我自己没有做这个设置,所以想验证我们的设置小组告诉了我们什么。重新安装后如何继续?我是否创建新的应用程序和部署组? –

+0

最后,我只是想确认在部署期间是否存在codedeploy强制覆盖文件的任何限制,如果之前出现了失败的部署?正如我在问题更新中提到的那样,我得到'文件已存在于位置'错误,并尝试删除部署根目录的内容。 –

0

为了进行部署,该软件包需要包含appspec.yml文件,并且该文件需要放在顶层目录中。似乎错误消息是由于主机代理无法找到appspec.yml文件。

+0

我证实了appspec.yml文件存在于S3存档中。由于存在,直接部署代码完成的部署能够成功完成。我想这与jenkins触发部署无法访问文件有关。 –

+0

@SandeepanNath你有解决方案吗? –