Prhub

#28474 [router] Multi-arch experimental sgl-router image + fix distroless libpcre2 startup crash

原始 PR 作者 Kangyan-Zhou 合并时间 2026-06-17 11:09 文件变更 2 提交数 2 评论 1 代码增减 +76 / -6

执行摘要

修复 sgl-router 镜像多架构与运行时崩溃

PR body 指出两个问题:一是 nightly 工作流仅为 linux/amd64 构建,无法在 ARM 主机(Grace、GB200/GB300 头节点、Apple Silicon 开发机)上拉取;二是发布的镜像在启动时因缺少 libpcre2-8.so.0 而崩溃。dynamo-tokenizers 依赖 pcre2-sys,后者在运行 bookworm 的构建器中动态链接系统 libpcre2,而运行时使用 distroless/cc-debian12 不提供该库。

建议合并。变更有明确动机、验证充分,且此前引入的镜像缺陷属于功能性阻塞。CI 工作流结构清晰,可作多架构构建的参考模板。

讨论亮点

该 PR 只有 1 条来自 gemini-code-assist[bot] 的评论,提示达到每日配额限制,未涉及实际代码讨论。无 review 评论。

实现拆解

  1. CI 工作流改造.github/workflows/nightly-experimental-sgl-router-docker.yml):

    • 将单个 publish job 拆分为 build(矩阵策略)和 create-manifest 两个 job。
    • build 矩阵包含两个 entry:linux/amd64 运行在 ubuntu-24.04linux/arm64 运行在 ubuntu-24.04-arm(原生构建,无 QEMU 模拟)。
    • 每个构建使用 --output type=image,...,push-by-digest=true 按摘要推送,并将摘要上传为 artifact。
    • create-manifest job 依赖 build,下载各架构摘要后使用 docker buildx imagetools create 创建多架构 manifest 并推送到 lmsysorg/sglang-staging:experimental-router-dev
  2. Dockerfile 修复docker/sgl-router.Dockerfile):

    • builder 阶段添加环境变量 ENV PCRE2_SYS_STATIC=1,强制 pcre2-sys 使用 vendored PCRE2 并静态链接。
    • 运行时二进制仅依赖 libstdc++.so.6libgcc_s.so.1libm.so.6libc.so.6,这些在 distroless/cc-debian12 中均存在。
    • distroless 运行时阶段无需改动。
  3. 验证

    • 本地构建 arm64 镜像后 sgl-router --help 正常启动。
    • readelf -d 显示运行时二进制无 libpcre2 NEEDED 条目。
    • actionlint(含 shellcheck)和 pre-commit 通过。
文件 模块 状态 重要度
.github/workflows/nightly-experimental-sgl-router-docker.yml CI 配置 modified 5.65
docker/sgl-router.Dockerfile Docker 配置 modified 3.81

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

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

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

风险与影响

风险较低。变更限于 CI 工作流和 Dockerfile,不涉及任何源代码逻辑。主要风险点:

  • ubuntu-24.04-arm runner 不可用或行为不一致,arm64 构建可能失败。
  • PCRE2_SYS_STATIC=1 可能在未来 pcre2-sys 版本中不再被支持或行为变化。
  • 依赖 digest 的 artifact 上传/下载如果存在竞态或不一致,可能导致 manifest 创建失败。

用户:sgl-router 镜像现可在 ARM64 主机上拉取使用;先前因启动崩溃无法使用的 distroless 镜像现可正常工作。
系统:CI 构建时间略有增加(两次构建 + manifest 创建),但并行执行影响有限。
团队:后续维护者需关注 matrix runner 可用性和 pcre2-sys 构建行为变化。

CI runner 依赖 第三方库构建行为

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论