Man*_*uel 7 git amazon-ec2 amazon-web-services node.js npm
在我的 ElasticBeanstalk 环境中,部署 Node.js 应用程序以及实例在 EB Health 选项卡中从状态“Pending”更改为“OK”总是(多年来)需要约 5 分钟的时间。
\n自 5 月 14 日起,应用程序部署大约需要 15 分钟,无需触及应用程序、基础设施、应用程序存储库、EB 环境或 EC2 Linux 映像。同样的事情发生在生产和开发环境中,两者都是独立的 EB 环境,部署相同的应用程序。
\n查看/var/log/eb-activity.log,我发现这 15 分钟花在了步骤上:
[Application deployment <APPID>/StartupStage0/AppDeployPreHook/50npm.sh] : Starting activity...\nRun Code Online (Sandbox Code Playgroud)\n脚本本身只运行:
\n/opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install\nRun Code Online (Sandbox Code Playgroud)\n该脚本仅执行一些文件检查和路径组合,然后运行:
\nnpm --production install\nRun Code Online (Sandbox Code Playgroud)\n为了进行比较,我清除了所有缓存的文件并在本地运行相同的命令,这大约需要 11 分钟:
\nrm -rf node_modules\nnode cache clean -f\nnpm --production install\nRun Code Online (Sandbox Code Playgroud)\n我再次运行该命令--loglevel silly,它显示有一个依赖项package.json不是从 npm 注册表中提取的,而是直接从 GitHub 中提取的,指向一个标签:
npm sill pacote Retrying git command: ls-remote -h -t git://github.com/<org>/<repo>.git attempt # 2\nnpm sill pacote Retrying git command: ls-remote -h -t git://github.com/<org>/<repo>.git attempt # 3\nnpm verb prepareGitDep github:<org>/<repo>#<label>: installing devDeps and running prepare script.\nRun Code Online (Sandbox Code Playgroud)\n每个git ls-remote命令的超时时间约为 1 分钟,然后似乎安装了 devDependencyprepare又运行脚本 5 分钟。我不确定 EC2 实例上是否也发生这种情况,但这是我发现的唯一提示。
3 个超时git ls-remote命令和prepare脚本总共耗时约 8 分钟。因此,如果这是之前未执行过的操作,则可能可以解释部署时间较长的原因。但为什么部署会突然与多年来的情况有所不同呢?
我看到了这篇 GitHub博客文章:
\n\n\n2022 年 3 月 15 日
\n改变成为永久性的。我们\xe2\x80\x99将永久停止接受 DSA 密钥。在上述截止点之后上传的 RSA 密钥仅适用于 SHA-2 签名(但同样,在此日期之前上传的 RSA 密钥将继续适用于 SHA-1)。已弃用的 MAC、密码和未加密的 Git 协议将被永久禁用。
\n
因此 GitHub 停止接受使用该git://协议的请求。也许这就是部署时间较长的原因,并且 EC2 中也会发生超时。但这个变化在 3 月 15 日(正好两个月前)就已经永久化了,为什么现在才出现这个问题。
从 5 月 13 日开始,我们的代码库中出现了同样令人费解的行为。我不知道为什么 GitHub 依赖项直到现在才遇到这些问题,但根据您分享的博客文章,这似乎是一个永久性的事情。
关于这个主题已经创建了一个GitHub 问题,社区提出了各种解决该问题的方法。
其中一项建议是:
通过在 package-lock.json 和 package.json 中用 https 替换 github 协议来解决
另一位用户建议:
...我们发现将 npm 更新到版本 7.16.0(至少,这是我们出于其他原因使用的版本)解决了这个问题
对于我们来说,我们选择了后者并开始使用 NPM 版本 7(具体来说,7.24.2)。这确实需要我们将package-lock.json文件更新到版本 2,这带来了很多其他问题,但它似乎对我们有用。
| 归档时间: |
|
| 查看次数: |
3197 次 |
| 最近记录: |