导语:
近期开源社区更新了 uv/poetry/pip-tools 等依赖工具,云厂商也在推带签名与 SBOM 的镜像仓库。Python 流水线要稳,需要“锁文件 + 可复现镜像 + 版本回溯 + 成本与安全护栏”。本文给出可直接落地的步骤。
1. 依赖与锁文件
- 入口:
pyproject.toml+uv/poetry/pip-tools生成锁文件,包含完整哈希。 - CI 门禁:依赖变更未更新锁文件直接失败;禁用无上限版本。
- 升级节奏:机器人定期 PR,高危 CVE 加急;依赖差分报告随 PR。
- 镜像源:只允许受信镜像/代理,记录来源。
2. 可复现镜像与签名
- 基础镜像固定 Python/OS 版本;定期刷新。
- 安装:
uv pip sync或pip install --require-hashes;生成 SBOM。 - 签名:镜像与 wheel 签名,部署侧强制校验;拒绝未签名制品。
- 运行:只读根文件系统;白名单写入目录;禁止生产环境临时
pip install。
3. 数据/模型版本与回溯
- 数据/特征/模型/提示版本化,记录 schema/来源/哈希/Owner。
- run 元数据:代码 commit、依赖哈希、数据/模型版本、参数、评测结果。
- 回溯:任意 run 可重放,对比输出;评测日志入索引。
4. 成本与性能
- 监控:CPU/GPU/内存、tokens/请求、批处理命中、缓存命中、带宽。
- 优化:批量推理、动态批大小、KV Cache、量化/蒸馏;长序列截断+检索增强。
- 预算:接口/作业级预算与配额;超限自动降级或停机,并写入审计。
5. 安全与合规
- 供应链:包签名校验;未知来源阻断;SBOM 入仓。
- 数据:敏感字段脱敏;跨境/跨域传输需审批与水印。
- 评测:模型/提示变更必须跑基线,低于阈值阻断;评测结果随发布存档。
6. CI/CD 与灰度
- CI:lint/格式化/类型检查、单测+覆盖率、依赖/锁文件校验、SBOM 生成。
- CD:制品签名校验、安装演练、灰度 1%-10%-50%,停止条件(错误率/延迟/成本)。
- 回滚:上一镜像与配置可一键切换;回滚后 30 分钟验证核心指标。
7. 看板与周报
- 质量:发布成功率、安装演练失败、签名校验失败、评测通过率。
- 成本:GPU/CPU/Token、批量与缓存命中、降级/限流次数。
- 数据/模型:版本分布、回溯/重放次数、评测趋势。
- 周报模板:依赖差分、高风险包、成本异常、回滚/降级记录、行动项。
8. 落地步骤
- 锁文件/镜像基线与签名校验上线。
- 数据/模型版本与 run 元数据落库;评测接入 CI。
- 部署前安装演练;配置灰度与停止条件。
- 成本看板上线,配额与降级策略可执行。
9. 快速核查
- 锁文件与签名校验已启用,SBOM 生成成功。
- 数据/模型/评测版本可追溯,run 可重放。
- 成本/延迟/错误率看板在线,自动降级与回滚可用。
结语:
把“锁文件+签名镜像+版本回溯+成本护栏”变成流水线默认动作,Python 交付才能在高频迭代和成本压力下保持稳态。