0

我有一个使用 CodePipeline + CodeCommit + CodeDeploy 到 EC2 实例的 CD 工作流程。

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

无论如何我可以将此选项与 CodePipeline 一起使用吗?

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

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

4

1 回答 1

1

因此,当您部署时,CodeDeploy 将查找一个文件(在实例上),其中包含有关应用程序/部署组的先前部署文件的信息,如果找到该文件,则使用它来清理(删除)现有文件,准备复制新的修订文件。

请参阅此 AWS 文档

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

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

希望这可以帮助

于 2017-10-05T07:04:04.377 回答