【问题标题】:The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path "appspec.yml"CodeDeploy 代理未在版本相对路径“appspec.yml”的解压版本目录中找到 AppSpec 文件
【发布时间】:2023-03-16 11:41:01
【问题描述】:

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

CodeDeploy 代理未在解压的修订目录中的修订相对路径“appspec.yml”中找到 AppSpec 文件。修订版被解压到目录“/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”。有关更多信息,请参阅 AWS 网站上的 AWS CodeDeploy Appspec 文档

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

appspec.yml 和我的战争文件都压缩在 S3 中

如何解决这个问题?

【问题讨论】:

    标签: aws-code-deploy


    【解决方案1】:

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

    CodeDeploy 代理在解压后未找到 AppSpec 文件 修订相对路径“appspec.yml”处的修订目录。这 修订被解压到目录 "/opt/codedeploy-agent/deployment-root/56474d41-fa14-41e0-9018-1bef9db19995/d-G9EZDPEGF/deployment-archive", 并且 AppSpec 文件是预期的,但在路径中找不到 “/opt/codedeploy-agent/deployment-root/56474d41-fa14-41e0-9018-1bef9db19995/d-G9EZDPEGF/deployment-archive/appspec.yml”。 有关更多信息,请参阅 AWS CodeDeploy Appspec 文档 在 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/ 并删除所有文件夹和该文件夹中的文件。

    【讨论】:

      【解决方案2】:

      当我们的 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
      

      【讨论】:

        【解决方案3】:

        我也遇到了这种情况,因为我发现 CodeDeploy 正在使用“/opt/codedeploy-agent/deployment-root/#####yourNumberWillBeDifferent#####”处的日志/部署信息填充磁盘空间。我已经删除了这个位置的所有目录,并且在下一次部署时我遇到了这个问题。我发现如果您将最新目录保留在此位置,那么您将不会收到错误消息。我最终要做的是每小时运行一个脚本,删除该位置的所有目录,除了最新的目录。

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

        ''' 修订被解压到目录“/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 想要为 previous 部署运行 ApplicationStop 步骤,而不是新部署 - 如果您考虑一下,这是有道理的。因此,它会查找它在先前部署中使用的 AppSpec 文件以找到该步骤。解决方法是将 AppSpec 放在错误消息中指定的确切路径中,并在 ApplicationStop 步骤中使用任何必需的命令。
        【解决方案4】:

        我在 copydeploy 下也遇到了这个问题,导致代码管道部署失败。 “CodeDeploy 代理未在修订版相对路径“appspec.yml”的解压修订版目录中找到 AppSpec 文件。

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

        2)记得将文件压缩在文件夹本身内(不要用文件创建文件夹并压缩它)

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-02-04
            • 2016-03-15
            • 2021-11-08
            • 2021-10-12
            • 2021-11-18
            • 2021-02-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多