【问题标题】:overwrite existing files from codepipeline deployment从代码管道部署覆盖现有文件
【发布时间】:2020-02-21 13:35:05
【问题描述】:

我正在尝试使用 aws codepipeline 部署一些新代码。第一次运行没问题,第二次部署失败是因为已有文件。如何指示我的流程覆盖现有文件?

错误信息: 部署失败,因为此位置已存在指定文件:

【问题讨论】:

  • 您能指定您正在执行的部署类型吗?也许分享一些代码或示例代码,它们表示管道中的步骤未按您预期的那样工作?

标签: amazon-web-services


【解决方案1】:

我认为最好的部署方式是在部署前删除项目目录并终止进程。这让项目目录的状态保持纯净并与原始存储库同步。

从这个链接 (appspec.yml hooks for deploying to EC2) 可以看出,CodeDeploy 在Install 阶段下载工件,我们无法访问该步骤。 Install 阶段出现在 BeforeInstall 钩子之后。

所以你应该删除目录并杀死进程之前 Install 要执行的阶段。

hooks:
   BeforeInstall:
     - location: codedeploy-scripts/deleteAndKill.sh
   #   runas: root # this might be needed depending on your setting.

正确定义codedeploy-scripts/deleteAndKill.sh 并尝试再次运行CodePipelineCodeDeploy

附:删除项目目录并终止进程有些麻烦。所以一旦你使用docker,你要做的就只有docker stop {container name}docker run {image name}

【讨论】:

  • 谢谢。我最终使用了 VSTS AWS codedeploy 连接器,使用它我能够覆盖现有文件。
猜你喜欢
  • 1970-01-01
  • 2022-08-17
  • 2019-07-14
  • 2022-01-14
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
相关资源
最近更新 更多