2016-01-22 39 views
4

我正在尝试使用AWS CodeDeploy将我的最新更改从Github下拉到服务器。我遇到的问题是在安装步骤我收到此错误: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,为什么我得到文件已经存在的错误?难道我做错了什么?

回答

2

你是否部署了与其他部署组相同的git仓库,或者以前是否手动部署过?如果目标文件夹中已存在相同的资源,CodeDeploy将检查目标文件夹中的资源是否由相同的部署组创建。如果您使用的是相同的部署组,则重新部署不应导致此问题。

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

0

我做了这样的工作:

我有几个失败的部署由于各种原因。问题在于,CD保留在EC2实例中,并位于/ opt/codedeploy-agent/deployment-root /一个由失败部署ID [非常长的字母数字刺探]命名的路径中。删除此文件夹并从[aws UI控制台]创建新的部署并重新部署应用程序。它现在应该成功。

注意:CD不重写文件[尚未由它创建的具体部署]

CodeDeploy没有一个文件夹中的部署,已经有代码[文件],因为它不希望与不同的干扰CD部署和/或其他CI/CD工具[如詹金斯]。它只部署在已经部署了特定部署代码的路径中。

您可以清空您的部署想要发生的文件夹,并通过CD重新部署您的代码。

+0

我在'/ opt/codedeploy-agent/deployment-root/<包含dep的目录内删除了一切(所有以前部署对应的所有目录,因为它是我的测试设置) loyments>'现在我得到这个错误 - '没有这样的文件或目录 - /opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-8C01LCBMG/deployment-archive/appspec.yml ',这似乎是对应于上一次成功构建的appspec文件。看起来在这之后,事情已经到了一个不稳定的状态。 –

+0

不知道我应该继续并删除部署根目录中的所有内容。 –

1

由于该文件已存在于服务器中,因此CodeDeploy具有挂钩(BeforeInstall),可用于运行自定义脚本来清理现有文件,因为codedeploy Install在文件已存在时不覆盖文件。

1

所有其他的答案是正确的,但在我看来,没有解决你的问题。然而,它们是一个很好的起点。 (简称:codedeploy认为这是不是在以前codedeploy推测有一个文件)

这是一个部署期间可解:“内容选项: 选择行动AWS CodeDeploy到部署过程中需要在文件上目标实例与应用程序修订中的文件具有相同的名称,用于相同的目标位置。“

您可以选择失败,覆盖并保留。覆盖可能是您的案例中的最佳选择。

你不能找到更多的信息

相关问题