因此,我正试图为我的应用程序设置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设置并在我试图部署到的实例上运行。
似乎认为您在某个时候进行了成功的部署。
进入/opt/codedeploy-agent/deployment-root/deployment instructions/并删除其中的所有文件。那么它就不会寻找最后一次部署了。
我刚刚遇到了同样的问题,我解决了!请确保您的AppSpec文件具有正确的EXTENSION!我使用的是yaml
,而不是yml
,现在一切都很完美。
我让它像这样工作:
由于各种原因,我有几次部署失败。问题是CD保存在EC2实例中,路径/opt/codedeploy-agent/deployment root/由失败部署的ID命名的文件夹[一个很长的字母数字字符串]。删除此文件夹并[从aws UI控制台]创建一个新部署,然后重新部署应用程序。这样,位于错误位置的appspec.yml文件将被删除。它现在应该成功了。
额外注意:
CD不会重写[尚未由其特定部署创建的]文件CodeDeploy不部署在已经有代码[文件]的文件夹中,因为它不想干扰不同的CD部署和/或其他CI/CD工具[如Jenkins]。它只部署在已经使用特定部署部署代码的路径中。
您可以清空要进行部署的文件夹,并通过CD重新部署代码。
当您登录到主机时,您在那里的目录中看到appspec.yml文件吗?如果不是,你肯定它已经和你部署的其他代码签入了吗?
刚刚也遇到了这个问题。在我的案例中,修订版zip文件在部署时会提取到一个目录中。因为/opt/codedeploy-agent/deployment-root/xxx/xxx/deployment-archive
包含我的修订文件的父目录(而不是实际的修订文件)。
关键是在没有父目录的情况下压缩修订。在mac终端中,
cd your-app-directory-containing-appspec
zip -r app.zip .