0

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

“无法删除顶级文件夹”"></a> </p> <p>我们无法解决这个问题。当我们删除节点模块目录时,部署工作正常。因此我们确信问题必须是使用名称。我们无法更改或删除这些依赖项,因为 angular 使用了这些依赖项。我们相信必须有办法解决这个问题,因此寻找建议。Appspec.yml 文件有助于过滤掉文件,在这种情况下会有所帮助吗?<br/>部署细节:<br/>我们使用标准的bitbucket code-deploy插件与aws通信,设置要部署的bitbucket仓库分支,选择部署组发起部署。<br/ ></p> <p><a href=在此处输入图像描述

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

4

2 回答 2

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
于 2019-11-27T13:14:25.280 回答
1

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

于 2019-11-28T07:17:36.893 回答