16

因此,我正在尝试为我的应用程序设置 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 设置并在我尝试部署到的实例上运行。

4

5 回答 5

35

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

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

于 2015-04-21T16:39:16.870 回答
4

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

于 2015-09-14T16:34:56.263 回答
2

我让它像这样工作:

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

额外通知:

CD 不会重写文件 [尚未由其特定部署创建] CodeDeploy 不会部署在已经存在代码 [文件] 的文件夹中,因为它不想干扰不同的 CD 部署和/或其他 CI/CD 工具[像詹金斯]。它仅部署在已经使用特定部署部署代码的路径中。

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

于 2016-01-27T11:14:35.830 回答
0

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

于 2015-04-20T16:57:29.943 回答
0

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

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

cd your-app-directory-containing-appspec
zip -r app.zip . 
于 2018-10-13T14:31:33.697 回答