0

我有一个使用CodePipeline + CodeCommit + CodeDeploy到EC2实例的CD工作流程。AWS CodePipeline + CodeDeploy + CodeCommit --file-exists-behavior选项

我除了这个--file-exists-behavior选项外,还有其他的工作。如果我从Aws CLI或控制台创建部署。部署工作正常。

无论如何,我可以使用CodePipeline这个选项吗?

如果没有此选项,我仍然会收到错误消息。

The deployment failed because a specified file already exists at this location

+0

类似的解决方案讨论:https://stackoverflow.com/questions/41590332/aws-codedeploy-fail-the-deployment-failed-because-a-specified-file-already-exis – Kannaiyan

+0

嗨,Kannaiyan,我读过这个问题,但它不涉及codePipeline。 –

回答

0

所以,当你部署,CodeDeploy将寻找一个文件(在实例)提供以下资料:先前部署的文件有问题的应用程序/部署组,如果发现该文件它,然后它使用它来清理(删除)现有文件,准备复制新的修订文件。

Refer This AWS Documentation

但是如果清理的文件不存在,或者是因为在现有的代码最初部署以某种其它方式(例如cloudformation实例用户数据/元数据源)或CodeDeploy部署基团已被重建为某些原因,然后清理文件将不存在或不匹配部署组ID。因此它不会被运行。因此,文件不会被清理,并且由于CodeDeploy不会覆盖文件,所以部署将失败。

什么解决方案可能在这种情况下是有一个钩子(例如BeforeInstall)调用脚本删除实例上的应用程序文件(如果它们存在)。

希望这有助于

+0

这是否意味着,如果我用CLI或控制台一次部署文件一次,我不必担心 - 文件存在行为选项? –

+0

没有这个CLI,你仍然需要一个脚本来安装之前删除现有的文件 –

相关问题