资讯动态

Higress 不可变 Wasm 插件发布流水线:从候选构建、OCI 契约到应急覆盖的端到端治理

发布时间:2026/9/16 16:10:02 来源:尧图企业网站定制
Higress 不可变 Wasm 插件发布流水线从候选构建、OCI 契约到应急覆盖的端到端治理【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress本篇技术指南围绕 Higress 官方插件发布治理文档 docs/developers/immutable-plugin-releases.md 展开深入讲解 Higress 如何以构建一次、提升一次、标签不可变的方式发布官方 Go / Rust Wasm 插件以及配套的权限收敛、双重人工审批、拉取门禁pull gate、迁移预检、引导回填与应急同版本覆盖机制。读完本文你将掌握 Higress 插件发布流水线的完整操作步骤、其 OCI 两层清单契约与 Proxy-Wasm 编译级校验的实现细节以及发布异常时的恢复路径。适用范围与不受此路径管理的对象该流程仅适用于以下两类官方扩展的发布plugins/wasm-go/extensions/下的官方 Go 扩展plugins/wasm-rust/extensions/下的官方 Rust 扩展。明确不通过该路径重新发布或重写的内容包括C 扩展、AssemblyScript 扩展、Go 示例plugins/wasm-go/examples/、Rust 示例plugins/wasm-rust/example/以及显式声明为不受托管的下游默认项。发布目标清单由仓库根目录的 plugins/release/catalog.json 声明其中每个插件条目记录logicalId、implementationgo / rust、sourceDir、image、artifactInputs、共享输入组sharedInputGroups以及下游消费者Console 市场包、plugin-server 库存。发布前的管理性切换管理员前置清单在任意一次非 dry-run发布之前管理员必须完成以下控制项配置。文档明确说明已入库的工作流在这些控制项就绪之前刻意失败关闭fail closed版本标签不可变将注册表中除latest之外的所有公开插件标签设为不可变候选产物只保留在独立的、按内容寻址content-addressed的命名空间中并配置过期策略。凭证最小化把能够写plugins/plugin:VERSION与:latest的凭证按 GitHub 允许的最小粒度收敛并从旧版 Wasm 工作流和用户中移除等价的公开写权限。文档提到自 SPEC-4634005 起只有例行的 latest 移动任务保留受保护的plugin-release-production环境版本标签阶段与自授权应急工作流都不带环境门地读取该凭证因此它必须是仓库级 secret——这意味着仓库内每个工作流都能读到它每次发布前都要复核该暴露面凭证仅限插件命名空间且绝不在 PR 触发的工作流中引用。plugin-server 凭证受保护的plugin-server-production环境持有唯一能写higress/plugin-server:gateway-version的凭证plugin-server 仓库发布者只能写其开发/候选命名空间。候选注册表变量配置PLUGIN_CANDIDATE_REGISTRY与CANDIDATE_REGISTRY_USERNAME/CANDIDATE_REGISTRY_PASSWORD为仓库级 secrets/variables。准备任务不再使用plugin-release-candidate环境候选构建只发布到内容寻址的candidates/命名空间该命名空间不被任何公开解析引用因此该阶段不请求审批。下游 GitHub App为每个下游仓库的 dispatch/PR 接收方创建最小权限的 GitHub App——可以更新确定性依赖 PR但不得合并、打标签或发布。应急证据发布者配置为RELEASE_PR_APP_ID与RELEASE_PR_APP_PRIVATE_KEY其安装在higress-group/higress上需要仓库 contents 与 pull-request 写权限但无 merge / tag / release / registry 权限。准备 App 的标签权限在 contents 与 pull-request 权限之外还需授予标签写权限——它为打开的准备 PR 打上release/gateway-version标签promote 在合并的 PR 上若缺少该标签则拒绝执行缺少标签权限会使准备运行失败而不是发布一个未授权的 PR。release-manager 保护以人工审批保护higress-release-manager并用标签规则集tag ruleset只允许其 release-manager App 创建vMAJOR.MINOR.PATCH形式的标签。负面检查记录为每个保留凭证记录负面检查结果——冲突的公开版本标签与 gateway-version 镜像覆盖必须被拒绝。文档特别强调环境保护、注册表 ACL、生命周期策略、标签规则集与凭证吊销都属于外部管理仅凭仓库源码无法断言需要人工在发布前核对。准备与提升Preparation and Promotion七步流程1. 代码冻结锁定精确的 40 位提交在代码冻结时记录当前main头部的精确 40 位提交暂不打开或更新常规的发布元数据 / Helm / submodule PR文档以 #4019 类型 PR 为例。prepare-plugin-release会校验target_ref恰好是该 main 头因此它生成的分支相对main只包含插件准备改动。2. 运行准备任务并生成确定性计划以该精确的 main/code-freeze 提交、稳定的 gateway 版本和dry_runtrue运行prepare-plugin-release。它校验完整目录并写出确定性计划。版本覆盖只以准备评审分支中提议的稳定VERSION编辑形式出现发布者绝不能把 dispatch 载荷当作公开标签信任。首次托管发布时将bootstrap_comparison_base设为上一个稳定 Higress 发布的精确 40 位提交文档记录v2.2.3为39ec41aab6eb1d40499bed2847085696de0ebb96。工作流以只读方式捕获当前公开 refs/digests再从该祖先提交比较工件输入普通快照拒绝这一一次性覆盖。捕获将每个可发布条目分类为 public / missing / deferred详见下文引导延迟与回填。实际产物中plugins/release/plans/2.2.5.json 记录了gatewayVersion: 2.2.5、sourceCommit: d3c0721dc8f67f5f126d6d374abca676622e330a、previousRelease: 2.2.4、catalogSha256与planId: sha256:be3ed1e9...每个插件条目还带有previousVersion、version、inputHash与changedPaths例如ai-agent从 2.0.1 → 2.0.2改动涉及VERSION、dashscope/message.go、main.go、main_test.go。3. 构建/测试每个计划条目并渲染快照每个计划条目通过受保护的候选发布者构建/测试。候选以计划 ID/输入哈希为键并报告其 manifest digest、源码提交与输入哈希。候选与应急发布执行同一个失败关闭的 manifest 契约恰好两个有序 OCI 层config.jsonapplication/vnd.module.wasm.config.v1jsonplugin.wasmapplication/vnd.module.wasm.content.layer.v1wasmOCI image-spec v1.0created固定为源码提交时间revision、version、input-hash 三个注解完全一致。复用reuse语义先做常规确定性源码构建再解析并拉取 digest 固定的候选要求其 config 字节恰好为{}将其 Wasm 字节与本次构建比对并施加与提升阶段相同的严格 manifest 与 Proxy-Wasm 校验——仅凭元数据永远不够。发布把层描述符绑定到本地字节只返回经过校验的 SHA-256 manifest digest。在渲染快照前工作流会扫描公开注册表中每个计划版本标签并将每个被占用标签与刚构建的候选 digest 比对接入迁移预检只有每个变更条目的证据匹配后才渲染快照。后续的源码或VERSION编辑会使该证据失效。4. 评审并合并唯一的准备 PR准备 PR 只包含VERSION编辑和plugins/release/snapshots/gateway-version.json。快照携带全部可发布插件包括按 digest 原样顺延的未变更条目是唯一的下游输入。合并它是常规发布的两道人工门之一准备 App 给 PR 打release/gateway-version标签已合并 PR 上的该标签才授权提升阶段的版本标签写入。迁移报告排除掉某些插件的 PR 仍可合并——被排除的插件只是不在本次发布中发布。实际快照 plugins/release/snapshots/2.2.5.json 中每个条目记录ociRef形如higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/plugin:VERSION、digest、inputHash、sourceCommit、candidateRefcandidates/plugin:planId 前缀inputHash 前缀digest、provenanceMode、backfill标记与consumersConsole 市场包文件的逐文件sha256、plugin-server 的inventoryKey/httpPath。配套的候选证据记录在 plugins/release/evidence/2.2.5.json。5. 运行提升任务版本标签 latest 移动针对精确的合并提交与快照哈希运行promote-plugin-release先dry_runtruedry run 在不登录、不修改注册表状态的情况下解析精确的已提交计划、上一快照与每个候选 manifest。版本标签阶段不请求环境审批但失败关闭除非同时满足source_commit从快照记录 code-freeze 提交的后代从main可达恰好属于来自release/plugin-snapshot-gateway-version分支、携带release/gateway-version标签的一个已合并准备 PR。生产发布者只允许创建缺失的公开版本标签或接受完全相同的既有 digest遇到冲突 digest 必须在任何变更前失败并跳过迁移预检排除的每个条目。任何latest写入之前先按快照 digest 远程拉取全部非阻塞公开工件本地门禁校验 OCI schema、两层顺序、来源、描述符大小与 digest、规范空 JSON config 以及完整的 Wasm 有效性同时要求导出内存、proxy_on_vm_start/proxy_on_configure的精确(i32,i32)-i32签名以及签名()-()的proxy_abi_version_0_2_*函数。所有拉取必须先于第一个可变拷贝完成。失败的插件被记录日志并跳过通过的插件继续处理持久化日志标记为latest-partial任务随后失败且不发布完成标记。只有当稳定 SemVer 不会倒退时才推进latest——这是第二道人工门仍需等待受保护plugin-release-production环境审批。若既有latest已服务于期望 digest则在读取旧版版本注解之前直接接受绝不重写。6. 构建 plugin-server 镜像从精确获批的 plugin-server 提交与快照构建higress/plugin-server:gateway-version。其 dry run 检出并测试该精确 plugin-server 源码绑定 gateway 版本/路径/计划/上一快照并在启用任何镜像工具或注册表写入前解析候选来源。向下游派发前验证镜像平台、标签、响应内容哈希与快照哈希。7. 派发 Console 与合并正式发布 PR从携带快照的精确 Higress 提交派发 Console合并其生成的 PR 并等待含该锁的 Console chart 发布。只有此时才从当前main创建或更新 #4019 风格的常规发布 PR且只限于发布元数据、Helm 依赖、发布说明与预期的 submodule 钉住。设置已发布的 Console 依赖并运行helm dependency update helm/higress以重新生成Chart.lock同时评审Chart.yaml与Chart.lock对应仓库中的 helm/higress/Chart.yaml 与 helm/higress/Chart.lock。绝不手动编辑受托管插件的VERSION文件。若该发布 PR 改变了任何目录声明的插件工件输入必须停止并从新的精确 main 提交重新准备快照/plugin-server/Console 链路。仅在精确依赖与就绪检查收敛后、紧接精确标签授权之前合并发布 PR。Higress 发布后以不可变 release/chart/image 身份派发 Standalone它推导确定性 PR 键且不得读取更新的分支头。拉取门禁今天证明什么结构级 编译级文档指出远程拉取门禁恰好有两层且都相对插件行为是静态的结构级Structural拉取的 manifest 必须是规范的 OCI v1.0 schema 2 镜像清单且是 Envoy 加载的确定性两层形态空 JSON config 描述符、恰好四个来源注解created、revision、version、io.higress.plugin.input-hash、层 0config.jsonapplication/vnd.module.wasm.config.v1json、层 1plugin.wasmapplication/vnd.module.wasm.content.layer.v1wasm。每个描述符的大小与 digest 必须等于拉取到的字节config.json必须是规范空 JSON 对象。文档明确这对应本次变更回应的单层latest事故这类 manifest 无法被 Envoy 加载门禁直接拒绝。编译级Compile level用 wazeroCompileModule解释器后端编译拉取的plugin.wasm字节检查编译后模块的导出导出内存、proxy_on_vm_start/proxy_on_configure的精确(i32,i32)-i32签名、签名()-()的proxy_abi_version_0_2_*导出。该实现可对照 tools/plugin-release/verify_pulled_plugin.go 验证常量区定义了wasmConfigMediaType/wasmContentMediaType/emptyObjectDigestverifyPulledPlugin依次校验 manifest 字节 SHA-256、schema 2 媒体类型、config 描述符指向规范空对象、四注解逐一匹配、两层标题config.json/plugin.wasm、每层字节大小与 digest、config.json字节恰好等于{}validateProxyWasmModule用wazero.NewRuntimeConfigInterpreter()编译模块检查导出内存、两个回调的(i32,i32)-i32签名与proxy_abi_version_0_2_*的()-()签名。门禁的边界模块被编译但从不实例化因此没有任何插件代码执行。门禁证明注册表提供了格式良好、digest 一致、可编译的 Proxy-Wasm 模块它不证明插件能在 Envoy 内初始化或服务请求。运行时覆盖仍停留在原有位置构建契约内每个插件自身的go test ./...以及发布前的 e2e 套件——Makefile.core.mk 中的make higress-wasmplugin-test会把构建的插件安装进 kind 集群并驱动 test/e2e/conformance/tests/ 下的 WASM 一致性用例。托管发布 runner 无法在发布任务内为每个插件实例化通用 Envoy/Proxy-Wasm 宿主公开拉取门禁不做任何运行时兼容性声明。运行时冒烟门禁未来占位文档明确这是拉取门禁运行时一半的占位设计本次变更刻意未实现。预期设计包括一个最小、digest 钉住的 Higress/Envoy runner 镜像——无集群、无 Helm、无 kind只有envoy加一个静态 bootstrap从oci://registry/imagedigest恰好加载一个插件即发布刚发布的 digest。runner 通过真实 Proxy-Wasm 宿主启动插件使proxy_on_vm_start/proxy_on_configure针对插件配置执行并断言宿主日志无插件错误外加一个存活 admin 端点。一条请求路径冒烟断言单个 listener 与 route 挂载插件、一条请求、检查能产生响应而不是 Envoy 对拒绝的 Wasm 配置返回的500。接入点今天拉取门禁的位置——promote 中任何latest写入之前、应急通道中稳定标签复制之前——且按插件粒度一个失败插件被日志记录并跳过而其余继续阶段在任何可变别名移动前失败。先决条件已发布、带独立 digest 钉与来源的版本化 runner 镜像决定插件特定配置如何提供给拒绝空配置的插件runner 在发布任务预算内的成本。在这些就绪之前上面的编译与结构门禁是发布阻断检查e2e 套件承担运行时覆盖。接入迁移预检Onboarding Migration Preflight当流水线开始管理一个插件时该插件可能已有人工在计划选择的精确版本标签上发布过产物。提升阶段会撞上不可变标签冲突维护者过去只能逐插件手工删除该标签文档记录 2.2.5 期间发生过三次。准备阶段现在会在打开准备 PR 之前分类每个计划标签扫描校准以只读方式通过流水线同一条注册表路径解析每个计划plugins/plugin:VERSION引用。先校准上一评审快照中的已知良好控制标签必须精确解析为其记录的 digest否则该扫描的任何分类都不可信、运行失败。授权失败或任何非显式注册表缺失证据的查找同样失败绝不当作标签缺失。无冲突即字节一致计划标签缺失、或已精确服务候选 digest均为无冲突。此时发布与预检前行为字节一致无快照标记、无 PR body 段落。冲突进入迁移模式被不同 digest 占用的标签使该插件进入迁移模式。快照在该条目上记录migration.stateblocked连同既有 digest、计划 digest、占用者注解、源码比较以及恰好一个推荐处置delete-legacy占用者完全无流水线注解推定是流水线前的人工产物。这是推定而非来源证明处置以人类确认为条件例如构建历史或维护者记录匹配之后注册表管理员才删除该标签删除后后续发布正常规划并提升该插件。bump-version同一精确版本已有不同受管构建占用。用该插件的version_overrides设为大于占用版本的已评审稳定版本重新运行 prepare。adopt-public占用者由与本计划相同的源码提交与相同输入哈希构建公开标签已服务这些输入可保持不变。候选与应急发布现在共享字节一致的 manifest 构造匹配输入产生相同 digest不会制造合成迁移冲突。只有无注解的占用者才推荐删标签。流水线无法分类的工件绝不自动删除处置在快照渲染期间与验证期间从记录注解重新推导手改推荐无法通过校验。按插件排除且持久排除按插件粒度其余插件正常提升被排除条目保留其候选与快照记录两次提升日志都记录排除版本批次preflight: migration-excluded、latest 批次migrationExcluded其版本标签与latest别名原样保留。整批全部被排除时失败关闭而不是发布空标记。后续快照原样顺延标记条目直到某次发布在该插件处置完成后重新规划它验证容忍标记记录的偏离公开标签且永不解析它。报告产物报告嵌入准备 PR body 并作为plugin-release-migration-report-gateway-versionartifact 上传。dry run 不构建候选因此把被占用的计划标签列为疑似冲突而不排除任何东西非 dry-run 扫描才做分类。疑似报告永远不会被绑定进快照。该词汇在 tools/plugin-release/model.go 中有完整类型定义migrationProbeCandidateDigest/migrationProbeExistenceOnly两种探测模式、blocked/suspected状态、delete-legacy/bump-version/adopt-public三种推荐、match/mismatch/unannotated源码比较以及MigrationReportFile、SnapshotMigration、SnapshotMigrationPreflight等结构。引导延迟与回填Bootstrap Deferral and Backfill首次受管引导从精确的bootstrap_comparison_base提交比较工件输入并通过评审过的引导证据对每个可发布目录条目分类而不是因缺失公开标签而失败Alpha 延迟VERSION的 prerelease 以alpha标识开头如1.0.0-alpha或1.0.0-alpha.1在每次发布中延迟。alpha 构建不阻塞引导、不产生候选、不获得公开稳定标签、不移动latest、不新增快照条目已有稳定发布的插件只是顺延旧条目。其他 prerelease 家族不受此规则延迟非 alpha prerelease 且公开工件缺失时失败关闭。既有稳定标签导入稳定VERSION的公开标签已存在时幂等导入——捕获用只读凭证解析其 digest快照携带精确的历史公开引用。回填条目稳定VERSION的公开标签真正缺失时成为回填条目。缺失只在显式 404 类证据404、manifest unknown、name unknown或包含Error response from registry:且后跟精确全限定引用加: not found的供应商结构化错误时被承认授权失败、本地可执行文件或文件失败、无关引用或泛化 not found 文本都会中止捕获且绝不算缺失证据准备期解析出的过期missing声明被拒绝。精确目标提交只构建一次为内容寻址候选评审过的快照绑定其 digest、源码提交与输入哈希。提升在缺失时从该候选创建公开标签、接受相同既有 digest、任何冲突失败且绝不重建。backfill标记是仅限引导的来源与迁移状态计划与快照必须完全一致地记录它完整版本批次验证后条目加入与其他被选稳定插件相同的串行化单调latest策略缺失时创建、相同则接受、推进旧的可靠注解稳定版本、否则失败关闭。首次受管快照因此混合来源历史公开条目加候选回填条目。它还携带显式bootstrapEvidence标记命名确定性提交证据文件plugins/release/bootstrap-evidence/gateway-version.json仓库现有 plugins/release/bootstrap-evidence/2.2.4.json校验对该标记重算提交文件的 digest并把每个导入公开 digest、回填声明与延迟分类绑定到它绝不从缺失上一快照或临时基线文件推断引导模式。准备 PR 校验解析候选引用提升后验证解析公开标签。历史公开工件不携带虚构来源注解。后续受管发布中的新目录插件走同样的 build-once/promote-once 路径但它是真正的新发布而非导入历史因此不标记backfilllatest对其正常推进。打标签前的authorize-higress-release-tag工作流会重查精确合并的发布提交与已提升快照从每个 plugin-server 平台标签推导出相同的快照源 Higress 提交要求它是发布提交的祖先并证明两个提交处的快照字节与已提交插件输入未变再通过Chart.yaml与Chart.lock一致声明的 HTTPS 仓库解析已发布 Console chart要求其包字节等于来源固定 OCI manifest digest 下的唯一 Helm 内容层。人工审批与标签规则集是强制的普通标签触发工作流是标签后发布者无法满足此门。规范发布证据与下游顺序发布关键派发使用规范 JSONjq -cS与规范字节的 SHA-256 键。Higress 的release.published发送方在把证据发给 Standalone 之前自行解析其 release ID/tag/peeled commit、快照哈希、Console release ID/tag/commit 与 chart digest、plugin-server ref/digest。Standalone 逐个重解析每个身份并把精确的 Standalone base SHA 记录进release-provenance.json重试只复用来源字节匹配的分支绝不变基到更新的main。所需配置为PLUGIN_SERVER_REGISTRY、受保护环境的注册表凭证以及工作流点名的受限 App 变量/secrets。Console chart 必须在标签授权前发布。操作者提供不可变 GitHub release ID 与钉住的 plugin-server source/digest就绪检查重解析 release、来源资产、两条 chart 分发路径、plugin-server 索引与子标签并输出规范 release-evidence JSON。dry-run artifact/hash 先评审正式授权要求已批准的 SHA-256重解析出的规范字节不一致即拒绝。两条路径都不接受手工拼装证据。Standalone 的release.published事件携带 release ID、解引用标签提交、归档与安装器校验和及规范键回到 Higress OSS 打包。文档明确repository-dispatch 天生是生产路径只有手工工作流路径尊重dry_runtrue。恢复与回滚重试使用相同不可变标识。仅当既有标签解析到期望 digest 时重试才可接受它绝不覆盖版本标签。恢复通过创建指向更早已验证 digest 集的新评审快照/发布。若latest需要修复使用带审计恢复审批的串行化提升流程已发布的 Console、gateway 与 Standalone 默认项保持钉住不依赖latest。应急同版本覆盖Emergency Same-Version Overwrite这是文档中最精细的应急通道要点如下临时放开不可变ACR 管理员临时为单个插件仓库解除标签不可变规则。维护者以所需稳定gateway_version、逻辑 ID、既有稳定插件版本与精确合并源码提交派发emergency-overwrite-plugin-tag先dry_runtrue再dry_runfalse。无环境门的授权检查工作流没有环境门——它查询 collaborators API 获取github.triggering_actor包括发起 rerun 的 actor在 step summary 记录role_name仅对maintain或admin继续畸形 actor、旧式write角色名、API 失败与畸形响应都拒绝访问。发布任务把相同检查作为第一步重复在 App-token 创建、checkout 与注册表登录之前——因为 Re-run failed jobs 会不经authorize直接恢复发布任务而恢复运行的触发 actor 是点击 re-run 的人。管理员在运行报告新 digest 后立即重新武装不可变。绑定与构建任何注册表登录/写入前工作流把所选目录条目、候选证据与发布快照绑定到该 gateway/plugin/version/public-reference 元组。目录推导的注册表与仓库传入发布配置的生产注册表必须等于该注册表。它先从当前main构建发布工具再 checkout 旧修复提交计算当前输入哈希测试并构建该精确源码。传给发布任务的工件同时包含当前工具与构建的 Wasm。按逻辑 ID 与版本串行化发布先向以源码提交与输入哈希为键的应急候选标签写期望的确定性两层 manifest。改变稳定标签前从公开注册表按 digest 重新拉取该暂存候选并运行 promote 在latest移动前使用的同一个verify-pulled-plugin门禁——事故通道不能发布 Envoy 加载不了的工件。门禁检查注册表实际服务的字节而非本地构建输出失败在任何稳定标签变更前中止。随后暂存并校验 lineage 更新解析已提交前任最后一个 lineage digest无 lineage 时是原候选 digest。稳定标签必须存在且服务该前任之后把暂存 digest 复制到稳定标签、重解析并对照确定性两层契约重查已发布 manifest。缺失或冲突的稳定标签在无覆盖的情况下失败。证据 PR 先于 latestrelease GitHub App 立即从预校验 lineage 字节创建或验证release/plugin-emergency-evidence-gateway-plugin-run-id及其 pull request。只有该步骤成功显式move_latest选项才把 digest 复制到latest。同一工作流运行的 rerun 可能发现稳定标签已处于期望 digest后续运行尝试在不再复制稳定标签的情况下记录缺失证据。首次尝试不能走该路径复用 run ID 但证据不同时失败关闭。暂存标签永久保留为来源emergency-source-commit-input-hash标签按提交与输入哈希内容寻址每次覆盖尝试一个、无冲突服务与稳定标签相同的 manifest。注册表常把标签删除实现为 manifest 删除ACR 亦然因此解除暂存引用可能销毁稳定标签服务的 manifestoras 1.2.3 没有可移植的仅标签解绑。已提交 lineage 与其 PR 是覆盖的持久记录暂存标签是提升前精确验证内容的可审计公开指针。不要手工删除这些标签。非原子性注册表变更与证据发布不可能原子。稳定复制成功但 lineage 提交/push/PR 创建失败时工作流保持失败。不可变只在足以 rerun 同一工作流运行的时长内解除以便它验证/复现相同字节并完成相同确定性证据分支不要派发不同运行作为替代。合并证据 PR 后才算事件关闭。下次发布自动升版被覆盖标签的插件必须在下一次 gateway 发布时升版。这自动发生修复提交改变输入哈希plan 会重新规划它。打包的 plugin-server/Console 镜像内嵌快照字节只能由下一次 gateway 发布治愈覆盖立即治愈 tag 拉取Envoy 直连消费者。该通道的 lineage 数据结构同样定义在 tools/plugin-release/model.goEmergencyLineagedigest、inputHash、sourceCommit、workflowRunId追加于CandidateEvidence.Lineage应急输入哈希由 tools/plugin-release/emergency_input_hash.go 计算。精确的 Standalone 打包deploy-standalone-to-oss是手工任务要求一个已验证的 StandalonevX.Y.Z标签加上其归档与src/get-higress.sh两者的 SHA-256 值。它从该精确标签下载两者标签缺失或校验和不匹配即失败。它绝不从 HTML 选择 release也绝不从main下载安装器。发布工具命令速览与进一步阅读发布流水线的全部子命令集中在 tools/plugin-release/main.goplugin-release validate-catalog|validate-console-recovery|capture-bootstrap-evidence| bootstrap-snapshot|plan|apply-plan|render-snapshot|migration-preflight|verify-snapshot| verify-pulled-plugin|append-emergency-lineage|semver-compare|emergency-input-hash [flags]配套契约测试覆盖了审批链approval_chain_contract_test.go、批次构建batch_build_contract_test.go、引导回填bootstrap_backfill_test.go、迁移migration_test.go 与 migration_carry_test.go、提升 latest 契约promotion_latest_contract_test.go、plugin-server 工作流契约plugin_server_workflow_contract_test.go、准备 PR 契约preparation_pr_contract_test.go、OCI 契约oci_test.go以及拉取门禁verify_pulled_plugin_test.go。发布的版本快照、计划、证据、引导证据与 Console 市场包分别归档在 plugins/release/snapshots/、plugins/release/plans/、plugins/release/evidence/、plugins/release/bootstrap-evidence/ 与 plugins/release/console/ 下。适用前提说明以上流程面向 Higress 官方插件维护者涉及 GitHub 环境、环境审批、注册表 ACL 与 Git 标签规则集等外部管理配置仓库源码只能约束代码路径内的校验如 manifest 契约、编译门禁、计划/快照/证据的 digest 绑定环境级安全依赖发布管理员按前置清单落实。读者若要在自己的发布中复刻该模型可把本流程视为不可变标签 内容寻址候选 双重人工门 静态拉取门禁的完整参考实现。【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价