所以我正在尝试为我的应用程序设置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设置和运行。
答案 0 :(得分:28)
似乎认为你在某个时候成功部署了。
进入/ opt / codedeploy-agent / deployment-root / deployment-instructions /并删除其中的所有文件。然后它不会寻找最后一次部署。
答案 1 :(得分:4)
我刚遇到这个相同的问题,我想出来了!确保您的AppSpec文件具有正确的EXTENSION!我使用yaml
而不是yml
,现在一切正常。
答案 2 :(得分:2)
我让它像这样工作:
由于各种原因,我有几次失败的部署。 问题是CD保留在EC2实例和路径 / opt / codedeploy-agent / deployment-root / 一个由失败部署的ID命名的文件夹[一个非常长的字母数字sting] 。 删除此文件夹并[从aws UI控制台]创建新部署并重新部署该应用程序。这样,将删除位于错误位置的appspec.yml文件。 它现在应该成功。
额外通知:
CD不会重写文件[尚未由其特定部署创建] CodeDeploy不会部署在已有代码[files]的文件夹中,因为它不想干扰不同的CD部署和/或其他CI / CD工具[如Jenkins]。 它仅部署在已部署具有特定部署的代码的路径中。
您可以清空部署要发生的文件夹,并通过CD重新部署代码。
答案 3 :(得分:0)
当您登录主机时,您是否在目录中看到appspec.yml文件?如果不是,你是否肯定已经使用其余已部署的代码进行了检查?
答案 4 :(得分:0)
也遇到了这个问题。就我而言,修订zip文件在部署后会提取到目录中。因此,/opt/codedeploy-agent/deployment-root/xxx/xxx/deployment-archive
包含我的修订文件的父目录(而不是实际的修订文件)。
关键是压缩不带父目录的修订。在Mac终端中,
cd your-app-directory-containing-appspec
zip -r app.zip .