AWS CodeDeploy Github文件已存在

时间:2016-01-22 16:44:33

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

我正在尝试使用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拉,为什么我的文件已经存在错误?我做错了吗?

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

所有其他答案都是正确的,但在我看来,未能解决您的问题。然而,它们是一个很好的起点。 (简称:codedeploy在前面的代码部署中看到了一个不可用的文件)

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

您可以选择失败,覆盖和保留。在你的情况下,覆盖可能是最好的选择。

您无法找到更多信息

答案 2 :(得分:1)

由于该文件已存在于服务器中,因此CodeDeploy具有挂钩(BeforeInstall),可用于运行自定义脚本来清理现有文件,因为代码部署安装不会覆盖文件(如果已存在)。

答案 3 :(得分:0)

我让它像这样工作:

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

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

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

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