前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9708
  • AI Agent读了你的secrets并删了生产数据库——PocketOS事故详解
  • 用聊天模型做金融内容审核:结构化输出设计实践
  • Prompt注入攻击原理与防御实践指南
  • 大规模漏洞扫描活动泛滥,攻击者冒充ClaudeBot等AI爬虫
  • 谷歌DeepMind发布手语转文本模型SL2T
  • LFM2.5-VL-3B:边缘设备高性能视觉语言模型发布
  • 通义千问3.8-27B发布,刷新开源大模型参数效率
  • 多Agent协作陷阱:个体测试全过,团队输出仍错误
  • Agent Plugins:Vercel/OpenAI/Microsoft 等联合推出 Agent 技能打包新标准
  • 企业实战:50+ AI Agent在UK主权云上的部署架构
  • ZeroGPU Router:让 AI Agent 用小模型处理例行任务
  • Solv Labs在AWS Bedrock上构建可审计的Agent支付系统
  • CodeBurn:让AI编程投入产出可见化
  • AWS SageMaker HyperPod分层KV缓存:LLM推理新范式
  • 2026年AI Agent安全开发指南
  • 从专有LLM API窃取推理痕迹研究
  • AI代码审查门控:让AI生成的补丁先自证再合入主分支
  • AI 正在消灭软件工程中层阶级
  • 企业 AI 分析的隐藏失败模式:语义漂移
  • 四步修复:让ChatGPT/Perplexity等AI搜索正确引用你的网站
  • CI发布成功却无人能安装:JetBrains插件三周静默故障复盘
  • MCP vs A2A协议解析:Agent连接协议选型指南
  • Adobe紧急修复:Campaign Classic与ColdFusion四个10.0严重漏洞
  • AI Agent自主搭建付费媒体商店:零人工注册的云服务开通实验
  • 用Claude构建骨架技术文档:Doc-to-Code追踪矩阵实践
  • 企业集成测试:单元测试无法覆盖的测试维度
  • AI 助手常用的启动模板:Demo 专用,上生产有坑
  • 英伟达 Nemotron 4 瞄准万亿参数,宣称超越中国大模型
  • AI Agent实测1200次运行费用仅1.2美元
  • Code-Graph-RAG:把整库变成知识图谱,让 AI 真正理解代码结构
  • Anthropic工程师内部分享:不用提示词,用图和循环构建自提示系统
  • Grok Bot上线:AI队友可登录你的账号替你干活
  • OpenAI 正式发布 ChatGPT Linux 桌面应用
  • Mojo 1.0正式发布:年内开源编译器和工具链
  • 比亚迪 HyWorldVLA 刷新自动驾驶基准:像素级+潜在空间混合世界模型
  • AI代码测试公司Blacksmith估值不到一年翻近10倍
  • 紫东太初GMC剪枝:省80% Token仍保多模态能力
  • AI 编程 Agent 使用 Git Worktree 的坑:vendor 符号链接
  • Reducer Engineering:AI Pipeline 成本直降 86% 的技巧
  • BizNode Pulse:本地运行的AI自主商业操作系统
  • Chat Templates权威指南:模型训练级Prompt渲染原理
  • AI Agent是影子AI更危险的续作
  • 多 Agent 系统调试:你的 Trace Tree 在说谎
  • 7 个 CLAUDE.md 错误悄悄消耗你的会话效率
  • 微软 MAI Code 1.1 Flash 性价比被 Deepseek V4 Flash 碾压
  • 企业生产级 AI 的数据基座:WPP 案例的 dbt 架构实践
  • 企业AI落地 regulated 行业:基础设施检查清单
  • Agent-Devtools:本地化AI Agent调试追踪工具
  • 运行时验证:测试与Guardrail的本质差异
  • Vibe Coding演进:AI编程工具成熟度与生产信任问题
  • LLM Agent操控真实PLC:工业协议工具调用实战总结
  • 已加载 51 / 9708
8.0
热点
AI SCORE
技术实践2026-08-12 20:59

CI发布成功却无人能安装:JetBrains插件三周静默故障复盘

dev.to · AI#CI/CD#DevOps#质量保障
Editor brief · 编辑速览

作者团队插件发布Job三周内持续显示成功,但Marketplace实际未上架。根因是发布脚本将「待审核状态」误判为无害错误并返回0,导致CI误报成功。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

三周绿灯,无一安装

这件事就发生在我们身上。我们 JetBrains 插件的发布任务自七月中旬以来每次运行都报告成功。但插件压根就不在市场上。

注册表 API 返回了 404。按产品名搜索什么都找不到。与此同时构建是绿的、发布说明写好了、变更日志也更新了。

没有人注意到。管道没注意到,仪表盘没注意到,我们也没注意到。从上一次正常发布到发现这个问题,中间隔了三周。

你的管道没有骗你

这部分值得理解,因为同样的问题很可能正潜伏在你的代码库里。

发布管道只有一项工作:把产物放到陌生人能安装的地方。几乎每个管道检查的都是别的东西——它检查上传命令是否以零退出。

这两个问题绝大多数时候结论一致。我们的发布步骤更进一步,做了合理的事:捕获失败、将错误文本与已知无害的情况列表对比,对这些情况返回零退出。

其中一种情况是"待审核"。新版本在可见之前会处于审核状态。为此让构建失败就是噪音,所以被放行了。

这就是陷阱。无害的瞬时状态和永久阻塞产生相同的消息。一旦插件卡住,后续每次运行都匹配同一个友好的模式并报告成功。管道正确地回答了它的问题。只是这个问题本身是错的。

两分钟就能补上的检查

问商店,而不是问管道。这就是全部思路,今天就能加上去,不需要改别的东西。

第一:发布后,用陌生人的方式获取公开列表。不带凭证、不用内部 API、不使用认证客户端。看到外部人员看到的东西才是关键。

第二:从响应中读取版本号,与清单文件中的版本比较。不是与你刚构建的版本比,也不是与任务中的变量比。而是与提交入库的文件比。

第三:每个发布渠道打印一行,说明哪个无法访问。已访问、无法访问、或过时。绝不输出裸零。

最后这点比看起来重要。一个错误退出的数据源被计为零,看起来和安静的一天完全一样。

在信任它之前,先让它故意失败

一个从没亮过红灯的监控只是个希望,配了一个日志文件。

给它一个清单过时的 fixture,断言它非零退出。运行一次,看看红色长什么样。只需几分钟,而这是区分真实检查和自我安慰的唯一方式。

我们在另一个监控上跳过这一步。它在那里坐了好几周,什么都不报告,而什么都不报告和一切正常之间无法区分。

一旦你见过这种形态,你会发现它无处不在

写入工作区的缓存文件会在下一次运行时被清除。日报的增量是基于一个种子示例行计算的。返回一个 HTTP 错误的数据源被计为零。

每一个都是绿的。每一个都没有产出。

缺失的成分总是一样的:第三种状态。系统对成功和失败建模,却忘了"未测量"。没有它,停机与安静的一天无法区分,而人们还是会依据那个数字行事。

两分钟换来的收获

三周的停机变成第二天早晨的一条消息。这就是全部的交换。

它还能捕获退出码无法触及的情况:上传确实成功了但清单仍未更新。从外部看这两种情况完全一样,而你的用户是在外部。

我们的版本读取三个公开端点,将它们与代码库中的清单对比,然后每个打印一行。它不带凭证。每天运行一次,无论我们当天是否发布了任何东西。

我们打开它的那天,它是红的。


Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
四步修复:让ChatGPT/Perplexity等AI搜索正确引用你的网站
下一篇
MCP vs A2A协议解析:Agent连接协议选型指南