依赖更新别靠手感:锁文件、版本范围与 CI 闸口清单

依赖更新治理

项目刚启动时,依赖更新看起来只是顺手执行一次 npm update、pip install -U 或 go get -u。但项目一旦进入多人协作和持续发布,依赖就会变成一条隐形供应链:版本范围决定会装到什么,锁文件决定实际运行什么,CI 决定能不能把变化放进主干。把这三件事管住,依赖更新才不会从“维护动作”变成“随机事故”。

Read More

把 E2E 测试写稳:Playwright 的选择器、等待与 CI 诊断清单

把 E2E 测试写稳

端到端测试最容易被团队嫌弃,因为它一旦不稳定,就会在 CI 里反复制造红灯:本地能过、线上偶发失败、截图看不出原因。问题通常不在 Playwright 本身,而在用例把页面动画、接口耗时、测试数据和外部状态都当成了“刚好会按时出现”。要让 E2E 真正保护发布,需要先把它写成可预测的工程资产。

Read More

把密钥管住:从 .env 到 CI Secrets 的配置安全清单

把密钥管住

很多项目的第一份配置都很简单:复制一份 .env,填上数据库地址、API Key 和调试开关,应用就能跑起来。但项目一旦进入多人协作、CI 构建和线上发布,配置就不再只是“读几个环境变量”。真正要管住的是边界:哪些值可以进仓库,哪些只能留在本机,哪些必须由 CI 或运行时注入,以及密钥泄露后如何快速轮换。

Read More

把日志写到能排障:结构化日志、Trace ID 与脱敏清单

把日志写到能排障

很多系统不是没有日志,而是日志只能证明“代码曾经跑过”。真正能排障的日志,应该在事故发生时回答三个问题:这是谁的请求、走到了哪一步、为什么变慢或失败。把日志从散乱句子升级为结构化事件,再配合 Trace ID、字段规范和脱敏策略,排查效率会比临时翻字符串高很多。

Read More