CodeDeploy 代理未在修订相对路径 "appspec.yml" 的解压修订目录中找到 AppSpec 文件

The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml"

根据以下错误消息,codedeploy 将我的存档文件夹复制到某个临时位置。我可以在部署存档文件夹后找到我的 archive.zip 文件夹。

The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml". The revision was unpacked to directory "/opt/codedeploy-agent/deployment-root/59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive", and the AppSpec file was expected but not found at path "/opt/codedeploy-agent/deployment-root/59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive/appspec.yml". Consult the AWS CodeDeploy Appspec documentation for more information at AWS website

但它看起来 appspec.yml 紧接在部署存档文件夹之后。但它位于 deployment-archive/archive/appspec.yml

appspec.yml 和我的 war 文件全部压缩在 S3 中

如何解决这个问题?

找到 issue.Instead 选择 appec.yml myapp 文件并压缩它们,我为它们创建了文件夹,然后创建了 zip 文件。 我应该只通过选择文件来创建 zip 文件,而不是为它们创建文件夹。 在这个问题上浪费了很多时间:(

我在 copydeploy 下也遇到了这个问题,代码管道部署一直失败。 "The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml".

我采取的步骤: 1) 从 AWS 测试模板中复制 appspec.yml 并使用它修改为新的 appspec.tml

2)记得将文件压缩到文件夹本身(不要创建一个包含文件的文件夹并压缩)

我也遇到了这个问题,因为我发现 CodeDeploy 正在用 logs/deploy 信息填满磁盘 space,位于“/opt/codedeploy-agent/deployment-root/#####yourNumberWillBeDifferent#####” .我删除了这个位置的所有目录,在下一次部署时我遇到了这个问题。我发现如果您将最新的目录保存在这个位置,那么您将不会收到错误。我最后做的是每小时有一个脚本 运行 删除此位置中除最新目录之外的所有目录。

您可能删除了文件夹 "d-WZDFGDBHU"。 CodeDeploy 查看了它在实例上执行的最后一次部署的 logs/info,并使用了那里的一些信息,但找不到它。这就是为什么它提到 -

''' 修订被解压到目录“/opt/codedeploy-agent/deployment-root/59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive”,AppSpec 文件在路径“/opt/codedeploy-agent/deployment-root/ 中是预期的但找不到59a04892-4afd-4e82-9335-52e8b6047d4b/d-WZDFGDBHU/deployment-archive/appspec.yml” ''' d-WZDFGDBHU 是在您刚刚尝试的部署之前执行的最后一次部署的部署 ID。

我不知道为什么 CodeDeploy 需要参考上次部署,但确实如此!!

请注意,这仅发生在就地部署中 - 而不是蓝绿色。

我也发现了这个 -

CodeDeploy 保留了一些最后的部署,以允许您回滚到以前的版本。默认情况下,它保留最后 5 个,但这可以使用 codedeploy 代理配置进行配置: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-agent-configuration.html

控制这个的设置是:max_revisions:

当我们的 CodeDeploy 脚本有问题时,您可能会看到此错误。 所以请检查 CodeDeploy 日志以了解部署服务器中的错误。

如果它的 Linux 服务器:

/opt/codedeploy-agent/deployment-root/CodeDeploy<DEPLOYMENT-GROUP-ID><DEPLOYMENT-ID>/logs/script.log

如果其 windows 服务器:

C:\temp\CodeDeploy\b394d44e-ca20-4956-a3ba-d90b99afa87f\d-1K1K9PR1D\logs\scripts.log

有时文件位于不同的部署文件中 例如,codedeploy 在服务器的 d-ERABTKHGF 文件夹中创建并保存了部署,但正在寻找文件夹 d-G9EZDPEGF.

The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml". The revision was unpacked to directory "/opt/codedeploy-agent/deployment-root/56474d41-fa14-41e0-9018-1bef9db19995/d-G9EZDPEGF/deployment-archive", and the AppSpec file was expected but not found at path "/opt/codedeploy-agent/deployment-root/56474d41-fa14-41e0-9018-1bef9db19995/d-G9EZDPEGF/deployment-archive/appspec.yml". Consult the AWS CodeDeploy Appspec documentation for more information at http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html.

如果您导航到服务器

total 0
drwxr-xr-x 2 root root 6 Jan 18 10:57 d-ERABTKHGF
[root@ip-173-31-56-188 d-ERABTKHGF]# pwd
/opt/codedeploy-agent/deployment-root/56474d41-fa14-41e0-9018-1bef9db19995/d-ERABTKHGF

解决方案: 导航到 /opt/codedeploy-agent/ 并删除该文件夹中的所有文件夹和文件。