【问题标题】:AWS Code Deploy Error on Before Install Cannot SolveAWS Code Deploy Error on Before Install 无法解决
【发布时间】:2015-04-20 16:36:57
【问题描述】:

因此,我尝试为我的应用程序设置 CodeDeploy,但在部署的 BeforeInstall 部分中我不断收到错误消息。以下是错误。

Error Code UnknownError
Script Name
Message No such file or directory - /opt/codedeploy-agent/deployment-root/06100f1b-5495-42d9-bd01-f33d59fb5deb/d-NL5K1THE8/deployment-archive/appspec.yml
Log Tail

我认为这意味着 YAML 文件位于错误的位置。但是它位于我的修订版的根目录中。我尝试过使用像这样的简单 AppSpec 文件,而不是更复杂的文件。

    ## YAML Template.
---
version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/www

或多或少,因为这是第一次部署,我希望它将修订版中的所有文件添加到 Web 服务器上的公共目录中。

我为此烦恼不已,我觉得这是一个简单的问题。我有正确的 IAM 策略和角色,并且我有 CodeDeploy 设置并在我尝试部署到的实例上运行。

【问题讨论】:

  • 你找到解决办法了吗??
  • 我也有同样的问题。运气好的话? CodeDeploy 很糟糕。我想我可能会回到詹金斯

标签: amazon-web-services yaml aws-code-deploy


【解决方案1】:

似乎认为您在某个时候部署成功。

进入 /opt/codedeploy-agent/deployment-root/deployment-instructions/ 并删除其中的所有文件。那么它就不会寻找最后一次部署。

【讨论】:

  • 这实际上是答案(或者至少在我的情况下是这样)。
  • 工作,除了我在 Windows 上,所以路径是 C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
  • 工作,你拯救了我的一天!
  • 浪费了一整天才找到这个!不确定断开连接是如何发生的,但就我而言,我所做的只是忘记推送 appSpec 中的文件之一。一旦我在源代码中替换了该文件,此错误就会不断发生。谢谢@Levitron
  • 为什么这是解决方案?想象一下,您从测试部署到登台,一周后您克隆登台以获取实时或另一个登台实例。然后您再次部署并遇到此错误.. 此解决方案在这里修复它。怎么来的?如果还没有 stackoverflow 答案,您如何开始解决这个问题? :-/
【解决方案2】:

我刚刚遇到了同样的问题,我想通了!确保您的 AppSpec 文件具有正确的扩展名!我使用的是yaml 而不是yml,现在一切正常。

【讨论】:

  • 工作就像一个魅力!
  • 该错误专门针对 appspec.yml 说明。我试过了,没有任何作用
  • 你拯救了我的一天!
【解决方案3】:

我让它像这样工作:

由于各种原因,我有几次部署失败。 问题是 CD 在 EC2 实例和路径 /opt/codedeploy-agent/deployment-root/​ 中保留了一个由失败部署的 ID 命名的文件夹 [一个很长的字母数字字符串] . 删除此文件夹并 [从 aws UI 控制台] 创建一个新部署并重新部署应用程序。这样在错误位置的 appspec.yml 文件将被删除。 现在应该成功了。

额外通知:

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

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

【讨论】:

  • 删除旧部署也是我们的“修复”。
【解决方案4】:

当你登录到主机时,你看到那里的目录中有 appspec.yml 文件吗?如果不是,您是否肯定它已与您部署的其余代码一起签入?

【讨论】:

  • 这是第一次部署,所以主机中还没有包含 AppSpec.yml 文件的目录我确实在压缩 tar 文件的根目录中看到它,该文件是为要部署的修订版而设置的在 S3 中
  • Hrmm,无论是否失败(据我所知知道)即使它是第一次部署。这是否会与您的其余内容一起结束?
【解决方案5】:

刚刚也遇到了这个问题。在我的例子中,修订版 zip 文件在部署时会提取到一个目录中。因为/opt/codedeploy-agent/deployment-root/xxx/xxx/deployment-archive 包含我的修订文件的父目录(而不是实际的修订文件)。

关键是在没有父目录的情况下压缩您的修订。在mac终端中,

cd your-app-directory-containing-appspec
zip -r app.zip . 

【讨论】:

    猜你喜欢
    • 2015-12-26
    • 2019-12-14
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多