Prhub

#22859 ci: add modal slurm log analyzer

原始 PR 作者 ishandhanani 合并时间 2026-04-16 05:10 文件变更 3 提交数 8 评论 1 代码增减 +501 / -0

执行摘要

添加基于 Modal 的 Slurm 日志分析工具,自动化 CI 失败调试。

根据PR body描述,夜间GB200工作流会保存失败日志作为tarball,但缺乏自动化分析工具。此变更使这些tarball可操作,提供重复的方式解压日志、使用结构化调试提示分析,并输出简明的后分析报告。

值得精读,展示了如何将AI工具集成到CI/CD流水线中,特别是安全处理和错误恢复的设计决策,可作为基础设施自动化的参考案例。

讨论亮点

没有review讨论,但提交历史显示从初始实现到完善安全功能(如添加sanitize函数)的演进,表明对安全风险的关注。

实现拆解

  1. 创建日志分析脚本:新增 scripts/ci/slurm/analyze_logs_with_modal.py,实现日志上传、Modal沙箱构建和AI分析调用。关键函数包括 sanitize(安全清理API密钥)、extract_tarball(解压日志)、build_sandbox_image(构建沙箱镜像),确保安全性和可重复性。
  2. 提供分析提示:新增 scripts/ci/slurm/log_analysis_prompt.md,定义AI分析日志的优先级顺序(如先读sweep日志)和输出格式,指导Claude Code进行结构化分析,避免噪声干扰。
  3. 集成到CI工作流:修改 .github/workflows/nightly-72-gpu-gb200.yml,在失败时添加步骤调用分析脚本,使用GitHub secrets传递Modal凭证,并将分析结果输出到Step Summary,实现自动化故障诊断。
  4. 安全与完善:通过提交历史迭代,添加sanitize函数防止API密钥泄露,修复输出处理逻辑,并迁移到新版Modal API,确保工具稳定性和安全性。
文件 模块 状态 重要度
scripts/ci/slurm/analyze_logs_with_modal.py CI 脚本 added 7.74
scripts/ci/slurm/log_analysis_prompt.md CI 脚本 added 4.55
.github/workflows/nightly-72-gpu-gb200.yml 工作流配置 modified 4.35

关键符号

sanitize configure_logging extract_tarball parse_args build_sandbox_image prepare_log_dir build_prompt upload_tree

关键源码片段

scripts/ci/slurm/analyze_logs_with_modal.py infrastructure

核心分析脚本,实现日志上传、Modal 集成、安全清理和 AI 调用,是整个工具的主要入口。

def sanitize(text: str) -> str:
    """清理API密钥和秘密信息,防止泄露到日志中。"""
    if not text:
        return text
    # 使用正则表达式匹配常见 API 密钥模式(如 sk-、ak- 开头)
    sanitized = _SECRET_PATTERN.sub("[REDACTED]", text)
    # 额外清理已知环境变量中的秘密值,增强安全性
    for var in ("OPENROUTER_API_KEY", "MODAL_TOKEN_ID", "MODAL_TOKEN_SECRET"):
        val = os.environ.get(var)
        if val and len(val) > 8:
            sanitized = sanitized.replace(val, "[REDACTED]")
    return sanitized

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

安全风险:sanitize函数可能漏掉某些密钥模式,导致敏感信息泄露到CI日志中。性能风险:Modal调用可能引入额外延迟,影响CI流程执行时间。外部依赖:工具依赖Modal服务和opencode模型,若服务不可用或模型变更,可能导致分析失败或结果不一致。

对工程师:减少手动调试时间,加速故障定位,提升工作效率。对CI系统:增加自动化分析能力,但可能因外部依赖增加运行不稳定风险。对团队:提升运维效率,但需要维护新工具和监控其依赖性。

安全泄露风险 外部依赖风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论