【问题标题】:AWS codedeploy deployment failure due to node modules names with special characters由于节点模块名称带有特殊字符,AWS codedeploy 部署失败
【发布时间】:2020-03-22 15:22:02
【问题描述】:

我们正在使用 AWS code deploy with bitbucket 在我们的 ec2 实例上部署我们的应用程序。这是我们的 Angular 项目存储库面临的一个新问题。这个 repo 有节点模块,因为我们使用 angular 和节点,因此需要这些依赖项。这些依赖项的目录名称以特殊字符 @ 开头。我们在堆栈上发现了一个线程,它说带有特殊字符的名称可能会导致失败,并出现我们遇到的类似错误。 我们收到的错误是

我们无法解决这个问题。当我们删除节点模块目录时,部署工作正常。因此,我们确信问题必须与名称有关。我们无法更改或删除这些依赖项,因为 Angular 使用了这些依赖项。我们相信必须有办法解决这个问题,因此寻找建议。 Appspec.yml 文件有助于过滤掉文件,在这种情况下会有所帮助吗?
部署详情:
我们使用标准的 bitbucket 代码部署插件与 aws 进行通信。设置要部署的bitbucket仓库分支,选择部署组启动部署。

上图的节点模块与应用程序捆绑在同一个分支中。我们使用 Angular 7 和节点,因此需要这些依赖项。现在,如果我们删除 node-modules 目录,部署工作正常。因此我们得出结论,正是这些特殊字符导致了失败。Here's 另一个问题描述了由于特殊字符引起的类似问题。

【问题讨论】:

    标签: node.js node-modules aws-code-deploy bitbucket-aws-code-deploy


    【解决方案1】:

    尝试在安装前使用 AppSpec 文件中的“BeforeInstall”挂钩自行清理目标目录,如下所示:

    version: 0.0
    os: linux
    files:
      - source: /
        destination: /var/app/myapp
    hooks:
      BeforeInstall:
        - location: ./cleanup.sh
    

    而cleanup.sh的内容是这样的:

    #!/bin/bash -xe
    rm -rf /var/app/myapp/
    

    在上面,请确保更新应用程序部署的目标。

    编辑 1:

    用 Repo 做了一个简单的测试:

    https://github.com/shariqmus/codedeploy-special-char-test

    (递归压缩 repo 并上传到 S3 并从那里测试)

    ...提取过程中没有剧情:

    [root@ip-172-31-27-170 codedeploy-agent]# tree /var/app/myapp
    /var/app/myapp
    ├── appspec.yml
    ├── cleanup.sh
    ├── node_modules
    │   └── @agm
    │       └── file.txt
    └── README.md
    

    【讨论】:

    • 我们确实尝试过这种清理方式,但并没有解决问题。
    • 能否提供简单的重现步骤,这看起来很有趣,将尝试调试它。
    • 更新问题,请查收
    • 用 Edit 1 更新了我的答案。
    • 感谢您的更新。我相信代码部署代理和命令行实用程序在底层必须是相同的,所以在我们的案例中技术上不应该失败。我们还没有通过使用命令行从 s3 压缩和部署来尝试它。但这样做是一个很好的测试。目前,我们只是在部署期间更新了脚本并删除了节点模块,并在完成后将它们添加回来。一个糟糕的工作,但没有这样的选择。将尝试此操作并更新结果。
    【解决方案2】:

    对于节点模块,建议始终将它们与您的代码一起打包,而不是在部署时下载它们。

    【讨论】:

    • 它们与代码本身有关,文件复制到实例时出现问题,并且代码部署拒绝了命名约定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2019-04-15
    • 2021-02-10
    • 2020-04-29
    相关资源
    最近更新 更多