我有一个使用CodePipeline + CodeCommit + CodeDeploy到EC2实例的CD工作流程。
除了这个--file-exists-behavior选项之外,我还有其他所有工作。如果我从Aws CLI或控制台创建部署。部署工作正常。
无论如何我可以在CodePipeline中使用此选项吗?
如果没有此选项,我仍然会收到错误。
The deployment failed because a specified file already exists at this location
答案 0 :(得分:0)
因此,在部署时,CodeDeploy将查找一个文件(在实例上),其中包含有关应用程序/部署组的先前部署文件的信息,如果找到该文件,则将其用于清理(删除) )现有文件,准备复制新的修订文件。
但是如果清理文件不存在,或者因为现有代码最初是以其他方式部署的(例如,云形式实例用户数据/元数据源),或者由于某种原因重新创建了CodeDeploy部署组,那么清理文件将不存在或与部署组ID不匹配。因此它不会运行。因此,文件将不会被清除,部署将失败,因为CodeDeploy不会覆盖文件。
在这种情况下,解决方案是什么?是一个钩子(例如BeforeInstall),它调用脚本来删除实例上的应用程序文件(如果存在)。
希望这有帮助