CI环境执行npm install如何避免argon2下载预构建二进制
Windows CI环境argon2依赖安装故障解决方案
针对第一个问题:CI环境规避argon2预构建二进制下载流程
你可以根据CI环境的实际配置选以下任意一种方案:
- 源码编译方案:如果CI环境已经预装了Node-GYP所需的编译依赖(Windows C++生成工具、对应版本的Python),执行
npm install前添加环境变量,强制argon2直接从源码编译,跳过远程预构建包拉取步骤:
如果Node-GYP拉取Node头文件也被网络限制,额外添加环境变量将头文件源指向你的内部npm镜像对应的Node发行版镜像地址即可:# 仅针对argon2包开启源码编译,不影响其他依赖 set npm_config_build_from_source=argon2set npm_config_disturl=<你的内部Node二进制镜像地址> - 内部镜像托管方案:如果不想在CI环境做源码编译,提前把对应版本的argon2预构建包上传到CI可访问的内部文件服务,安装前添加环境变量把预构建包拉取地址指向内部服务:
set npm_config_argon2_binary_host_mirror=<你的内部文件服务中argon2预构建包的根路径>
针对第二个问题:本地预存二进制文件供安装时调用
完全可以,操作步骤如下:
- 准备和CI环境完全一致的运行环境(相同Windows版本、相同Node大版本、相同x64架构),在本地安装对应0.27.2版本的argon2,拿到匹配的预构建压缩包,包名和你日志里的一致:
argon2-v0.27.2-napi-v3-win32-x64-unknown.tar.gz - 在项目仓库中新建固定目录存放二进制包,比如
vendor/argon2/,把下载好的tar包上传到该目录提交到代码仓库 - CI执行
npm install前添加环境变量,指定argon2直接读取本地仓库里的预构建包,不发起网络请求:set npm_config_argon2_local_file=./vendor/argon2/argon2-v0.27.2-napi-v3-win32-x64-unknown.tar.gz
补充说明:你日志中同时出现了keytar依赖的同类报错,keytar使用prebuild-install管理预构建包,处理逻辑完全一致:要么设置
npm_config_build_from_source=keytar走源码编译,要么提前把对应版本的keytar预构建包托管到内部服务/提交到仓库,通过npm_config_keytar_binary_host_mirror或npm_config_keytar_local_file参数指定地址即可。
以上所有环境变量配置都可以直接写到项目根目录的.npmrc文件中,不需要每次在CI脚本里单独执行set命令,配置示例:argon2_local_file=./vendor/argon2/argon2-v0.27.2-napi-v3-win32-x64-unknown.tar.gz build_from_source=keytar disturl=<你的内部Node镜像地址>
内容的提问来源于stack exchange,提问作者Siminho
相关产品推荐
相关产品推荐

