Skip to main content
Skip to content

GitHub 包防火墙故障排除

检查缓存的包或配置问题是否解释了使用 GitHub package firewall 时意外的安装结果。

注意

此功能目前处于状态 公开预览 ,可能会更改。

软件包在策略更改后仍会安装

包管理器和注册表代理可以从其本地缓存中重复使用以前下载的包。 如果没有新的请求到达 GitHub package firewall,防火墙将无法根据更新后的策略评估该软件包。 这可能会使软件包在更改策略或删除异常后得以安装。

检查本地 npm 缓存

检查: 包是否仍通过同一防火墙终结点在单独的测试环境中使用空 npm 缓存进行安装?

  1. 请注意确切的包名称、版本和范围(如果适用)。 检查企业策略或异常是否允许该版本。

  2. 在原始项目外部的临时项目中,将 npm 配置为使用相同的企业的 GitHub package firewall 终结点和身份验证,包括默认和特定于范围的注册表设置。 保持原始项目和锁定文件不变,并且不清除共享 npm 缓存。 请参阅“使用 GitHub 包防火墙保护终端节点”。

  3. 使用新的空缓存目录安装确切的版本。 将 PACKAGE-NAME、EXACT-VERSION 和 EMPTY-CACHE-DIRECTORY 替换为包名称、版本和缓存目录路径。 --ignore-scripts 选项可防止包生命周期脚本运行。

    npm install PACKAGE-NAME@EXACT-VERSION \
      --cache EMPTY-CACHE-DIRECTORY --ignore-scripts
    
  4. 将结果与原始项目进行比较:

    • 如果防火墙阻止测试,请检查原始项目的已安装包、缓存、注册表配置和锁定文件是否存在差异。 仅凭该被阻止的测试,无法确定是哪一项差异使原始安装得以进行。
    • 如果测试成功,请验证该版本的请求是否已达到同一企业的防火墙终结点,然后重新检查策略和异常。 不要假定 npm 使用了缓存的内容。

Artifactory 缓存

注意

本指南仅适用于 npm 包的实验性 Artifactory 集成。 即使使用空的本地 npm 缓存,Artifactory 也可以提供缓存的内容,而无需通过防火墙发送新请求。

如果 npm 从 Artifactory 检索包,请检查 Artifactory 是否提供缓存的内容。 另请检查虚拟 npm 存储库是否使用由防火墙提供支持的远程仓库,并且不包括直接从公共 npm 注册表检索包的远程仓库。 请参阅“使用 GitHub 包防火墙保护终端节点”。