ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Agent Governance Toolkit 多语言包发布指南:从 Dry-run 演练到 PyPI、npm、NuGet、crates.io 与 GHCR 的完整发布流水线

Agent Governance Toolkit 多语言包发布指南:从 Dry-run 演练到 PyPI、npm、NuGet、crates.io 与 GHCR 的完整发布流水线 人工智能AI AgentAI 安全治理策略引擎Agent 沙箱认证鉴权【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit点击查看免费下载Agent Governance ToolkitAGT是一个覆盖策略执行、零信任身份、沙箱与可靠性工程的 AI Agent 治理项目其发布模型横跨 Python、npm、.NET、Rust、Go 与 OCI 容器镜像六类制品。本文基于仓库 docs/PUBLISHING.md 展开结合 .github/workflows/publish.yml、.github/workflows/publish-containers.yml、.github/workflows/sbom.yml 与 .github/pipelines/esrp-publish.yml 等真实流水线配置讲透 AGT 的发布权威模型、dry-run 演练机制、包身份迁移策略、各生态发布细则与发布前检查清单。读完本文你将掌握在 AGT 仓库中安全执行一次全量发布、校验 release manifest、按依赖顺序发布 Python 包、以及理解 SBOM/来源证明签发的完整方法。发布模型与发布权威Release AuthorityAGT 的发布模型建立在构建与发布分离、权威分散的治理原则上。核心事实是规范canonical发布制品由 GitHub Actions 构建并附加来源证明attestation而注册表发布在过渡期内暂时经由 Azure DevOps ESRPMicrosoft 官方 OSS 发布通道完成直至 PyPI trusted publisher 配置以及 npm/NuGet 的 GitHub 凭据就绪。权威类别当前目标发布审批发布工作流的 Maintainers构建与证明.github/workflows/publish.yml 与 .github/workflows/sbom.yml包注册表临时 ESRP ADO 管道凭据就绪后切换为注册表原生 GitHub 发布容器镜像基金会或仓库所有者的 GHCR 命名空间安全通告规范仓库的 GitHub Security Advisories关键约束是发布管理者release manager必须能从 GitHub Actions 构建、证明并检查规范制品而注册表发布在 GitHub 原生凭据就绪前暂时绑定在 Microsoft ESRP/ADO 发布权威上。这意味着构建结果wheels、tarballs、nupkg与最终发布动作push 到 PyPI/npm/NuGet分属两套流水线二者通过 pipeline artifact 交接。Dry-run 发布与 release manifest包发布演练workflow_dispatchdry_run在 .github/workflows/publish.yml 中Publish Packages 工作流接收两个手动触发输入package要发布的包可用all、all-python、all-npm或具体包名例如agent-governance-toolkit-core、agent-governance-copilot-cli、agent-governance-claude-code、agent-governance-opencode、agent-governance-antigravity-cli、agt-sandbox默认all。dry_run布尔值默认true。置为true时只构建、打包、证明并上传制品不会向公共注册表发布。以dry_run: true触发该工作流即可完整演练构建与证明链路。注意工作流内的强制校验逻辑当workflow_dispatch且dry_run: false且选中的 Python 包超过 1 个时会直接报错退出——批量 PyPI 发布必须走有序的 ESRP 管道GitHub 发布单次只允许选一个 Python 包按依赖顺序逐个发布publish.yml。release-manifest.json发布的目录清单无论是否 dry-run工作流都会生成并上传release-manifest.json由 scripts/ci/generate_release_manifest.py 生成。该脚本从仓库内置的静态清单PYPI_PACKAGES、NPM_PACKAGES、NUGET_PACKAGES、RUST_CRATES、GO_MODULES、OCI_IMAGES六个常量表构建 manifest记录schema_version、event_name、ref_name、release_tagrequested_package与dry_run状态每个制品族的ecosystem、name、source_path、automation自动化状态automation字段有四种取值语义定义在 manifest 的automation_legend中取值含义github-actions由 publish.yml 或 publish-containers.yml 构建并发布policy-engine-ci-pack-only由 policy-engine CI 打包但规范发布工作流仍需显式注册表发布接线manual-publish-needed构建/打包存在但规范注册表发布尚未在 publish.yml 中自动化tag-publish-needed由 Go module tag/proxy 发布发布工作流必须创建或校验 tag发布前审查这份 manifest可确认没有任何包族被静默遗漏。脚本同时会基于事件类型自动纠正 dry-run 状态若event_name release则强制dry_run Falsegenerate_release_manifest.py。容器镜像演练Publish Container Images容器镜像发布由独立的 .github/workflows/publish-containers.yml 承担支持all或单个组件选择trust-engine、policy-server、audit-collector、api-gateway、registry、relay、governance-sidecar。手动触发的dry_run默认也是true此时构建镜像但不推送 GHCR tag 或证明只有 release 事件或显式dry_run: false才会真正发布。手动运行还支持自定义tag默认dry-run确保演练不会覆盖latest或版本化 tag。该工作流使用 Docker Buildx 矩阵构建多架构输出linux/amd64,linux/arm64并仅在真实发布时登录 GHCR、推送镜像并附加 build provenancepublish-containers.yml。包身份以 package-migration.md 为唯一事实源包身份的唯一事实源是 docs/package-migration.md它记录每个包的规范包名canonical package name当前包名 / 兼容名legacy or compatibility behavior源码路径source path发布工作流release workflow该文档定义了四类状态词汇Canonical面向基金会发布的目标身份、Compatibility为既有用户临时保留的包名、Deprecated不推荐新用户使用、Pending transfer注册表所有权依赖 AAIF/LF 账户建设。不要把任何包加入发布矩阵而不先加入包映射表——这是发布治理的硬性要求。典型的迁移示例PyPI 上agent-governance-toolkit-core的旧名包括agent-os-kernel、agentmesh-platform、agentmesh-primitives、agentmesh-runtime、agent-hypervisor迁移动作是发布规范包、旧名降级为仅依赖存根npm 上aaif/agent-governance-sdk与microsoft/agent-governance-sdk并存期间Microsoft 包仅作为兼容包装NuGet 的Microsoft.AgentGovernance*同样只是 Microsoft 来源包族的兼容名基金会规范的包 ID 必须在迁移注册表前记录于 package-migration.md。各生态发布细则PyPIPython 包由 .github/workflows/publish.yml 构建并证明临时注册表发布走 .github/pipelines/esrp-publish.yml。要求的发布行为为每个发布包构建 wheel使用 .github/release-tools/release-tools.txt 中hash 固定的发布构建工具安装命令为pip install --require-hashes --no-deps证明构建来源actions/attest-build-provenance并配合 sigstore 签名在 PyPI trusted publishers 为所有包名配置完成前经 ESRP 发布旧包名只能通过显式存根或文档化弃用方式保留。发布矩阵中值得注意的细节publish.yml13 个 Python 包agent-governance-toolkit-core、-integrations、-cli、-protocols、agent-governance-toolkitmeta 包源码位于agent-governance-python/agent-compliance、agent-discovery、agent-lightning、agent-marketplace、agent-rag-governance、agt-sandbox、agent-control-specification源码在policy-engine/sdk/python、agt-policies、acs-generatornoBuildIsolation: true。构建命令分三种agent-governance-toolkit-*用python -m build --wheel合并包因 force-include 兄弟路径只支持直接构建 wheelacs-generator用--no-isolation其余用python -m build。构建后强制校验 dist 中至少存在一个 .whl否则报错退出publish.yml。工作流对inputs.package做了 shell 注入加固输入经环境变量传给脚本再用 jq--arg传入过滤器杜绝攻击者利用引号逃逸执行注入命令publish.yml。ACS Python SDK 是唯一需要跨平台编译的包其 wheel 矩阵覆盖linux-x86_64/linux-aarch64manylinux_2_28、macosx_10_12_x86_64、macosx_11_0_arm64、win_amd64五个平台publish.yml并对每个 wheel 做 tag 校验与原生扩展加载 smoke testsdist 还会被二次构建成 wheel 以验证自包含性。npmnpm 包同样由 publish.yml 打包npm ci --ignore-scripts安装依赖、构建检查后npm pack生成.tgz并证明临时发布经 ESRP。要求安装依赖必须使用npm ci --ignore-scripts打包前运行包构建检查GitHub 具备 npm token 或 trusted publishing 配置前tarball 经 ESRP 发布microsoft/*包名视为兼容名不是长期基金会身份包重命名记录在 docs/package-migration.md。npm 发布矩阵publish.yml包含agentmesh-copilot-governance、agentmesh-mastra、npm-agentmesh-mcp-proxy、agent-governance-copilot-cli、agent-governance-claude-code、agent-governance-opencode、agent-governance-antigravity-cli、agentmesh-sdk源码在agent-governance-typescriptselector 同时认agentmesh-sdk/agent-governance-sdk/microsoft/agent-governance-sdk、agentos-mcp-server。Node 版本按包区分Node 20 或 22。当 GitHub 路径真正发布时会先查npm view判断版本是否已存在以避免重复发布并用--provenance --access public发布publish.yml。NuGetNuGet 包在 GitHub Actions 中构建、打包并证明publish.yml使用 .NET 8.0.x SDK 执行dotnet build --configuration Release、dotnet test然后dotnet pack三个项目——AgentGovernance、AgentGovernance.Extensions.ModelContextProtocol、AgentGovernance.Extensions.Microsoft.Agents同时产出.nupkg与.snupkg符号包均附加 provenance 证明。临时注册表发布经 ESRP 管道NuGet 发布签名也使用 ESRP只要 Microsoft 来源包 ID 仍处于 Microsoft 注册表权威之下。两个安全硬性约束不要在 GitHub workflow YAML 中放置明文签名或注册表密钥NuGet CLI 下载采用固定版本 SHA-256 校验CWE-494 防护。发布前还会解包.nuspec校验包元数据。Rust cratesRust crate 通过 crates.io 发布所有权由项目发布管理者控制。规范 crate 目前包括Crate源码位置agentmeshagent-governance-rust/agentmeshagentmesh-mcpagent-governance-rust/agentmesh-mcpagent_control_specification_corepolicy-engine/coreagent_control_specificationpolicy-engine/sdk/rust在规范 AAIF 发布之前crate 所有权必须转移或委托给基金会/项目发布管理者。ESRP 管道的 Rust 发布逻辑还提示了依赖顺序约束agentmesh同时依赖agentmesh-mcp与agent_control_specification因此只有无未发布 workspace 依赖的 crateagentmesh-mcp、agent_control_specification_core先打包发布其余按依赖顺序在专门步骤中处理。Go moduleGo module 通过 git tag 发布由 Go module proxy 索引。当前模块路径为github.com/microsoft/agent-governance-toolkit/agent-governance-golang若仓库迁移到基金会所有的 GitHub 组织模块路径迁移必须先记录在 docs/package-migration.md然后才能在新位置打 tag。OCI 容器镜像容器镜像由 .github/workflows/publish-containers.yml 发布。规范镜像必须使用基金会或仓库所有者命名空间而不是ghcr.io/microsoft/*。此前的 Microsoft 镜像路径如ghcr.io/microsoft/agentmesh/component仅作兼容路径保留若继续可用必须有文档化的支持窗口。镜像命名遵循ghcr.io/repository_owner/agent-governance-toolkit/componenttag 规则release 事件用发布 tag去掉v前缀手动运行用输入 tag 或默认dry-runrelease 时同时打latest与 SHA tagpublish-containers.yml。SBOM 与来源证明Provenance每次发布都应包含见 .github/workflows/sbom.yml来自 sbom.yml 的SPDX 与 CycloneDX SBOManchore/sbom-action生成sbom.spdx.json与sbom.cdx.json针对包与容器制品的GitHub provenance attestationsactions/attest-build-provenance校验和或注册表原生验证指引列出包身份变更与兼容别名的发布说明。sbom.yml 在 release 事件下还会对 SPDX SBOM 执行actions/attest-sbom、下载发布源码归档并证明其来源、将两个 SBOM 文件上传到 GitHub Release 资产。构建侧则统一使用actions/attest-build-provenance对 wheel、sdist、.tgz、.nupkg、.snupkg及容器镜像 digest 附加来源证明。发布检查清单综合 docs/PUBLISHING.md 与流水线实现一次完整发布的顺序如下确认main分支相关 CI 全绿确认包映射表与发布矩阵一致新增包必须同时写入 docs/package-migration.md以dry_run: true运行发布演练检查release-manifest.json确认无包族遗漏在 GitHub 注册表凭据配置完成前运行 ESRP ADO 管道.github/pipelines/esrp-publish.yml完成包注册表发布确认 SBOM 与 provenance 工作流已启用创建签名发布 tag从 GitHub Actions 发布容器制品经 ESRP ADO 管道发布包制品验证制品可从规范注册表获取为旧包名发布兼容/弃用通告。其中 ESRP 管道esrp-publish.yml支持target参数pypi/npm/nuget/rust/go/all与dryRun参数Python 发布阶段通过dependsOn强制先发布前置包如agent-control-specification先于agt-policies、acs-generatoragent-governance-toolkit-core先于-cli/-integrations/-protocolsagent-governance-toolkit-cli先于agt-sandbox。该管道以托管身份 Workload Identity Federation 通过AGT-ESRP-Signing服务连接完成认证全部密钥值ESRP_KEYVAULT_NAME、ESRP_SIGN_CERT_IDENTIFIER、ESRP_RELEASE_CERT_IDENTIFIER、ESRP_NUGET_SIGN_CERT_IDENTIFIER、ESRP_CLIENT_ID、ESRP_OWNERS、ESRP_APPROVERS等都来自 ADO 管道变量不落盘到 YAML——这也正是 .github/pipelines/AGENTS.md 中将每次管道编辑视为安全敏感操作的原因。总结AGT 的多语言发布体系可以概括为三条主线GitHub Actions 负责构建 证明wheels/tgz/nupkg/镜像 SBOM provenance、ESRP ADO 管道临时负责注册表推送PyPI/npm/NuGet、package-migration.md 负责身份治理规范名、兼容名、迁移动作的唯一事实源。对任何参与 AGT 发布或维护其 CI 的开发者而言掌握 dry-run 演练、release manifest 审查与依赖顺序发布这三件事就能在保证供应链安全的前提下可靠地完成一次跨六个生态的全量发布。赞分享人工智能AI AgentAI 安全治理策略引擎Agent 沙箱认证鉴权【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit点击查看免费下载相关推荐caveman 公共包发布流水线从注解标签到 npm/PyPI 可信发布的完整机制caveman 公共包发布流水线从注解标签到 npm/PyPI 可信发布的完整机制 本文基于 docs/PACKAGE_RELEASES.md https:/人工智能AI 应用AI 技能AI 插件LLMOps开发工具.NET MAUI 如何用 pushPackages:false 对 NuGet 发布流水线做 dry-run 验证.NET MAUI 如何用 pushPackages:false 对 NuGet 发布流水线做 dry run 验证 在把 .NET MAUI或相关 dot前端移动开发桌面应用跨平台UI组件Tree-sitter 语法发布指南从版本号到 crates.io / npm / PyPI 的全流程实践Tree sitter 语法发布指南从版本号到 crates.io / npm / PyPI 的全流程实践 本文基于仓库文档 docs/src/creatin开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表