【问题标题】:AWS CodeDeploy Github File Already ExistAWS CodeDeploy Github 文件已存在
【发布时间】:2016-04-29 08:29:33
【问题描述】:

我正在尝试使用 AWS CodeDeploy 将我的最新更改从 Github 拉到服务器。我遇到的问题是在安装步骤我收到此错误:

Error CodeUnknownError
Script Name
MessageFile already exists at location /data/sites/wordpress/api_now_playing_staging.php
Log Tail

我的 appspec.yml 看起来像这样:

version: 0.0
os: "linux"
files: 
  - source: "/"
    destination: "/data/sites/wordpress"
permissions:
  - object: /data/sites/wordpress
    pattern: "**"
    owner: wp
    group: nginx
    mode: 755
    type:
      - file

我的问题是,如果假设 git 使用 CodeDeploy 进行拉取,为什么我会收到文件已存在错误?我做错了吗?

【问题讨论】:

    标签: git amazon-web-services github aws-code-deploy


    【解决方案1】:

    所有其他答案都是正确的,但在我看来,无法解决您的问题。然而,它们是一个很好的起点。 (简而言之:codedeploy 看到一个在之前的 codedeploy 中无法推测的文件)

    这可以在部署期间解决:“内容选项: 当目标实例上的文件与应用程序修订中的文件同名且目标位置相同时,选择 AWS CodeDeploy 在部署期间采取的操作。”

    您可以选择失败、覆盖和保留。覆盖可能是您的最佳选择。

    您找不到更多信息

    【讨论】:

      【解决方案2】:

      由于文件已经存在于服务器中,CodeDeploy 有钩子 (BeforeInstall),可用于运行自定义脚本以清理现有文件,因为 codedeploy Install 不会覆盖已存在的文件。

      【讨论】:

        【解决方案3】:

        我让它像这样工作:

        由于各种原因,我有几次部署失败。问题是 CD 在 EC2 实例和路径 /opt/codedeploy-agent/deployment-root/​ 中保留了一个由失败部署的 ID 命名的文件夹 [a very long alphanumeric sting] 。删除此文件夹并 [从 aws UI 控制台] 创建一个新部署并重新部署应用程序。现在应该成功了。

        注意:CD 不会重写文件 [不是由其特定部署创建的]

        CodeDeploy 不会部署在已有代码[文件] 的文件夹中,因为它不想干扰不同的 CD 部署和/或其他 CI/CD 工具 [如 Jenkins]。它只部署在已经使用特定部署部署代码的路径中。

        您可以清空要进行部署的文件夹,然后通过 CD 重新部署代码。

        【讨论】:

        • 我删除了 /opt/codedeploy-agent/deployment-root/<directory containing deployments> 内部的所有内容(所有目录对应于所有以前的部署,因为这是我的测试设置),现在我收到了这个错误 - No such file or directory - /opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-8C01LCBMG/deployment-archive/appspec.yml,这似乎是 appspec与上次成功构建对应的文件。看起来在这个删除之后事情已经进入了一个不稳定的状态。
        • 不确定我是否应该继续删除部署根目录中的所有内容。
        【解决方案4】:

        您是使用不同的部署组部署相同的 git 存储库还是之前手动部署过?如果目标文件夹中已存在相同的资源,CodeDeploy 将检查目标文件夹中的资源是否由同一部署组创建。如果您使用相同的部署组,重新部署应该不会导致此问题。

        CodeDeploy 主机代理的当前工作方式是下拉部署工件并根据 AppSpec 文件将它们移动到正确的存储库。即使您从 Github 存储库进行部署,也不仅仅是在目标文件夹中运行 git pull。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 2017-05-26
          • 2021-02-16
          • 2017-09-15
          • 2015-12-21
          相关资源
          最近更新 更多