DSH Quality

CI/CD 插件扫描:把 DSH 质量检查接进流水线

今天过审的插件,下个月可能已经烂掉。这篇讲怎么把 DSH 插件检查接进流水线,让闸门跑在每次提交上,而不是靠感觉。

为什么一次性评审不够

插件评审是一张快照。背后的 npm 包会发新版本,维护者会失联,依赖会爆出漏洞。这些都不会出现在你三个月前做的那次评审里。如果唯一的闸门是人读一遍 README,那你信的其实是一个会过期的决定。

按信号强度排序,该扫什么

  • 维护活跃度——上次发布时间,仓库是否还活着
  • 依赖面——你顺带继承了多少个传递依赖
  • 安装脚本——任何 postinstall 都想清楚再让它在你机器上跑
  • 权限范围——插件要的权限和它实际需要的对不对得上
  • 文档质量——连自己都讲不清的插件,你一定会配错

闸门放在哪

放在插件清单发生变化的那一点,而不是部署时。加插件本质是改依赖,所以它应该和清单修改在同一个 PR 里。这样 diff 同时展示代码改动和质量变化。

最小流水线形态

  • PR 触发时解析插件清单,输出当前插件集合
  • 拉取每个插件的质量信号(发布时间、依赖数、安装脚本)
  • 和上一次集合对比,只在出现退化时失败
  • 把差异作为 PR 评论贴出来,让人看到变了什么

怎么让闸门不变成噪音

杀死一个安全闸门最快的方法就是误报。如果每次提交都失败,人就会开始无视它,然后它什么都保护不了。所以按退化失败,而不是按绝对阈值:一个一直很平庸的插件,不是今天的问题。

常见问题

扫描该阻塞合并吗?

只对高风险类别的退化阻塞——安装脚本和权限范围。其余只警告。

信号多久刷新一次?

每次插件清单变化时,加一个每周定时任务,让缓慢腐坏也能浮出来。

它能替代人工评审吗?

不能。它替代的是机器做得更好的那部分,把人的时间腾出来读真正要紧的代码。

ci cd plugin scanningplugin scanning cisecurity gate pluginsdsh plugin supply chainhow to scan dsh plugins in ci cdplugin security gate pipelineautomate plugin quality checksdsh plugin supply chain security