Skip to content

refactor: remove dead code and harden release supply chain (#544) - #545

Merged
liujuanjuan1984 merged 3 commits into
mainfrom
chore/dependency-supply-chain-hardening
Oct 25, 2026
Merged

liujuanjuan1984 merged 3 commits into
mainfrom
chore/dependency-supply-chain-hardening

Conversation

@liujuanjuan1984

@liujuanjuan1984 liujuanjuan1984 commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

概要

完成依赖审计与发布供应链的仓库内加固,不改变 A2A 运行时行为。

主要变更:

  • 将发布流程拆分为只读构建/审计、PyPI 发布和 GitHub Release 三个 job,分别使用所需的最小权限。
  • 在任何审计或发布前验证 release 输入确实是已 checkout commit 上的 v* tag。
  • GitHub Release 在 PyPI 成功后才执行;手工关闭 PyPI 发布时仍可单独修复 GitHub Release。
  • 所有 GitHub Actions 固定到带精确版本注释的不可变 commit;pre-commit hook 使用 commit SHA 与 # frozen: tag。
  • Dependabot 分别管理 a2a-sdk、运行时框架、常规工具/传递依赖、GitHub Actions、pre-commit 和构建依赖,并增加 cooldown。
  • runtime、dev 和 build 依赖审计使用 strict、hash-locked、禁用 pip 在线解析的模式。
  • 依赖清单变更时自动运行 dev/build 审计,并保留 JSON 审计报告。
  • 构建依赖移入独立 build-requirements/requirements.txt,由独立 pip ecosystem 维护并用于 hash-locked PEP 517 构建。
  • Release 增加 CycloneDX runtime SBOM,并在各发布 job 上传前验证 SHA256SUMS。
  • 将 sse-starlette 从 3.5.0 升级到 3.5.1。
  • 清理全仓高置信死代码、无生产引用的套壳函数和仅供测试使用的生产模型。

审查收敛

本轮独立审查发现并修复:

  • pre-commit SHA 未声明 # frozen: 时,Dependabot 会跟踪默认分支 HEAD;现改为固定稳定 tag 语义。
  • 根目录构建锁文件缺少自动更新入口;现迁移到独立目录,由 pip ecosystem 维护。
  • PyPI 与 GitHub Release 并行可能导致 PyPI 失败但 Release 已创建;现增加成功/跳过条件与顺序依赖。
  • 手工 dispatch 只校验产物版本,未校验输入 tag 身份;现前置校验 tag 存在且指向 checkout commit,并增加 annotated tag、缺失 tag、错误 commit 测试。

死代码审查

使用仓库 thin-wrapper 报告、静态引用搜索、测试覆盖与 Git 历史交叉验证后,确认并删除:

  • SDK REST 迁移后不再接线的 _rest_error_response、相关常量和对应测试。
  • 未使用的 build_task_store、unwrap_task_store 以及仅供测试装配使用的 task-store 薄壳函数。
  • 无生产引用的本地 JSONRPCErrorResponse 模型;测试改用测试支持对象。
  • 仅测试读取的 ExtensionMethodRegistry.methods() 投影;测试改为验证实际运行时 resolve() 路径。

动态路由、SDK 回调、抽象仓储接口、协议发现、扩展协商和兼容性元数据均保留,因为它们属于应用层或接入层边界。

验证

  • ./scripts/doctor.sh:通过,832 项测试通过,覆盖率 92.76%。
  • runtime 依赖审计:43 个依赖,无已知漏洞。
  • dev 依赖审计:85 个依赖,无已知漏洞。
  • build 依赖审计:4 个依赖,无已知漏洞。
  • Dependabot 配置:JSON Schema 校验通过。
  • GitHub Actions:actionlint 1.7.12 校验通过。
  • uv lock --check、pre-commit、mypy、wheel/sdist 构建与安装后 smoke test 全部通过。

兼容性与风险

  • 不改变运行时 API、Agent Card、OpenAPI 或持久化格式。
  • PyPI 只接收 wheel/sdist;SBOM 与校验和只进入 GitHub Release。
  • 无新增第三方运行时依赖。

管理员后续项

以下仓库级设置需要 org/repo admin,本次按要求未修改:

  • 启用 Dependabot alerts/security updates、secret scanning、push protection。
  • 将 Actions 默认 workflow 权限改为只读,并要求 full-length commit SHA。
  • 为 main 启用分支保护、必需检查和禁止 force push/delete。
  • 为发布配置 required reviewers 的 GitHub Environment。

Closes #544
Related: #542, #536

@liujuanjuan1984 liujuanjuan1984 changed the title chore(ci): harden dependency audit and release supply chain chore(ci): harden dependency audits and release supply chain (#544) Oct 24, 2026
@liujuanjuan1984 liujuanjuan1984 changed the title chore(ci): harden dependency audits and release supply chain (#544) refactor: remove dead code and harden release supply chain (#544) Oct 25, 2026
@liujuanjuan1984
liujuanjuan1984 marked this pull request as ready for review October 25, 2026 04:34
@liujuanjuan1984
liujuanjuan1984 merged commit dbe55f8 into main Oct 25, 2026
6 checks passed
@liujuanjuan1984
liujuanjuan1984 deleted the chore/dependency-supply-chain-hardening branch October 25, 2026 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[chore] 加固依赖审计与发布供应链

1 participant