# PR #21579 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[CI] Replace upload/download-artifact with job outputs in release-docker workflow
- 合并时间：2026-03-28 13:12
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21579

---

# 执行摘要
本 PR 通过将 GitHub Actions 工作流中的 upload/download-artifact 替换为 job outputs，修复了 docker 镜像发布流程中的栈溢出错误，提高了 CI 系统的可靠性和简洁性。

# 功能与动机
原始 workflow 使用 upload-artifact 动作上传镜像摘要，但该动作存在“Maximum call stack size exceeded”错误，导致发布失败。job outputs 机制更适合传递短字符串，简化了流程，如 PR body 所述：“Fixes persistent 'Maximum call stack size exceeded' error”。

# 实现拆解
修改文件 `.github/workflows/release-docker.yml`：
- 在 `publish-x86` 和 `publish-arm64` 作业中添加 `outputs` 字段，定义 `digest-cu129` 和 `digest-cu130` 输出，例如：
  ```yaml
  outputs:
    digest-cu129: ${{ steps.build-cu129.outputs.digest }}
  ```
- 修改 `build-cu129` 和 `build-cu130` 步骤，添加 `id` 并通过 `$GITHUB_OUTPUT` 输出 digest，例如：
  ```bash
  echo "digest=${DIGEST}" >> $GITHUB_OUTPUT
  ```
- 移除 `upload-artifact` 和 `download-artifact` 相关步骤及其文件操作，减少了复杂性。

# 评论区精华
此 PR 没有 review 讨论，直接合并，表明变更被认可为低风险改进，无需额外技术争议。

# 风险与影响
风险：需确保 job outputs 正确传递，否则后续 `create-manifests` 作业可能失败；但 PR 中已包含测试计划验证。影响：对用户无感，但提升了 CI 效率和维护性，减少了发布中断的可能性。

# 关联脉络
与 PR #21563“拆分 runtime docker 发布 workflow”相关，两者都优化了 docker 发布 CI 流程，展示了团队对 CI 基础设施的持续改进趋势。