mcli 20260806 发布
发布日期: 2026-08-06 · 版本: RELEASE.2026-08-06T00-00-00Z
距离 mcli 20260804 仅两天,本次发布完成了客户端向 Silo 身份的整体切换。这是一次刻意保持「纯品牌与封闭」性质的发布:--version 与 --help 现在以 Silo 客户端的身份呈现,所有残余的 MinIO SUBNET 外联路径在构建期被关闭,诊断工具链中内置的厂商加密公钥被移除,贡献政策改为无 CLA + 强制 DCO 签署。本周期零依赖变更、零协议变更 —— go.mod 与 20260804 逐字节一致 —— 因此回归面被严格限制在文案、命令门禁与 CI 三个层面。
行为变更
所有原先会连接 MinIO SUBNET 的路径均已在构建期关闭,且无法在运行时重新开启:
mcli license register、mcli support upload、mcli support proxy set、mcli support callhome enable,以及mcli license update ALIAS的在线续期形态,均打印稳定的提示信息 —— “MinIO SUBNET services (registration, licensing, uploads) are disabled in this Silo build of mc; diagnostics remain available locally.” —— 并恒定以退出码1结束。脚本中如有这些调用应予移除。基于本地文件的mcli license update ALIAS license.key仍然可用,许可证使用内置公钥离线验签。mcli support diag/perf/profile/inspect恒定以本地(airgap)模式运行:诊断报告、性能剖析与 inspect 归档全部写入本地文件,不向任何地方上传。--airgap参数保留以维持兼容(实际上始终生效),SUBNET 注册不再是任何诊断命令的前置条件。mcli support callhome disable|status、mcli support proxy show|remove、mcli license info与mcli license unregister照常工作 —— 它们只读取或清除本地与服务端配置。- 全新生成的配置不再自动写入指向 MinIO 公共演示集群的
play别名,默认别名为local、s3、gcs。已有配置文件永远不会被修改,旧版配置迁移逻辑仍识别历史条目。 mcli --version增加一行身份说明(“Silo object storage client, based on MinIO technology”)与第二行版权信息。首行的机器可读格式保持不变,解析首行的脚本不受影响。
主要变更
- CLI 全面切换 Silo 身份:客户端自我介绍改为 “Silo client for object storage and filesystems”。约 220 处帮助文本重写:涉及被管服务器的用法说明改用 “Silo/MinIO server” 措辞,示例别名从
myminio/play换成mysilo,LDAP 示例 DN 换成dc=example,dc=com,示例分层名称换成SILOTIER-*。事实性表述保持事实:minio分层类型、协议头以及第三方互操作提及均未触碰。 - SUBNET 构建期关闭:连接能力在编译期被单一开关移除,所有 SUBNET 请求汇聚的唯一 HTTP 出口以上述稳定错误拒绝。命令入口提前拦截,诊断命令强制本地模式,
mcli license info显示的 AGPL 许可说明不再附带商业订阅推销。专门的回归测试(cmd/subnet-disabled_test.go)钉住了全部行为,上游合并无法悄悄恢复任何外联。 - 治理 —— 无 CLA,强制 DCO:贡献按 inbound=outbound 原则以 AGPL-3.0-or-later 接收;贡献者保留自己的版权,维护者不获取项目许可证之外的任何权利。每个提交必须携带
Signed-off-by尾注,由新增的 CI 工作流强制校验(尾注须与提交作者邮箱匹配,仅豁免 GitHub 官方 bot 地址)。CONTRIBUTING.md、PR 模板与中英文 README 均已写明政策,行为准则的联系方式改为本分支维护者。 - 双版权署名:运行时输出与帮助信息同时致谢两条脉络 ——
Copyright (c) 2015-2025 MinIO, Inc.与Copyright (c) 2025-2026 PGSTY,源码构建动态计算截止年份。NOTICE明确声明分支关系,以及与 MinIO, Inc. 无隶属、无背书关系。 - 发布线更名为
main:工作流分支过滤器、文档与贡献指引全部指向main,旧的master引用已清除。
安全加固
- 移除厂商加密公钥:此前
mcli support inspect在未提供密钥时,会回退到用内置的 MinIO RSA 公钥加密输出 —— 产生只有厂商才能解密的归档。内置公钥现已移除:inspect 改用服务端为每次请求生成并回传给调用方的随机密钥(或运维人员自备的密钥),而任何未配置接收方的加密上传路径都会直接失败,绝不静默借用第三方密钥。运维人员产出的诊断数据,现在始终由其本人掌握解密能力。 - 品牌政策门禁:
buildscripts/check-branding.sh接入make verifiers与 CI。一旦命令树中重新出现 MinIO 运营的端点、商业推销 URL、上游产品身份、或任何内嵌的MII…公钥,构建即失败 —— 同时显式豁免有意保留的兼容标识(环境变量、协议头、模块路径、旧配置迁移默认值与原始版权头)。
工程与交付
- CI 迁移到 Node 24 Actions 运行时:
actions/checkoutv7、actions/setup-gov7、goreleaser-actionv7 及 Docker 系列 Actions —— 全部继续钉在 commit SHA 上,由 dependabot 保持更新。 - 功能测试只针对受控服务器:测试套件默认连接本地服务器(
localhost:9000)而非 MinIO 公共演示集群;CI 从pgsty/silo下载钉死的 SILO 服务端版本RELEASE.2026-08-04T00-00-00Z(经 SHA-256 校验)后再运行套件。 - 零依赖变更:本周期没有任何模块升级;20260804 建立的安全基线(Go 1.26.5、零个可达已知漏洞)原样延续。
- 打标签前经过审计:本次发布以一轮独立的对抗性审查作为门禁 —— 通读 245 个文件的全量 diff、品牌/兼容分类的 grep 全集扫描、沿调用图验证任何命令与参数组合都无法触达
subnet.min.io/play.min.io/dl.min.io,并以冒烟测试确认每条被禁用路径都返回稳定错误与退出码1。
兼容性
脚本与集成所依赖的一切均有意保持不变:mc 命令名与 mcli 包名/二进制名;~/.mc / ~/.mcli 配置目录(由调用名派生);github.com/minio/mc 模块路径及全部 import 路径;MC_* 环境变量;协议头(x-minio-*)与 minio-go SDK 的 User-Agent 前缀;minio 分层类型;.part.minio 断点传输后缀;Prometheus 抓取任务名 minio-job;以及软件包格式、发布资产命名与 YYYYMMDDHHMMSS.0.0 版本方案。客户端与 MinIO 服务器及其他 S3 兼容端点保持完全兼容。
已知问题
20260804 发布说明中标记的 mcli watch 回归已在服务端解决:修复随 SILO 20260804 交付,本客户端的 CI 现在正是针对该版本运行包括 watch 在内的功能测试套件。将 mcli 与 SILO 服务端 20260804 或更新版本搭配即可正常接收桶事件;更早的已发布服务端版本仍受影响。
上游未修复的历史缺陷继续适用,其中最严重的是 minio/mc#5139:mirror --remove --watch 在源端删除对象的非当前版本时,可能误删目标端的现存对象。在版本化桶上组合使用 --remove --watch 时请务必谨慎。
关联提交
- 8a883ca:ci: move the branch filters to main and fetch the server from pgsty/silo
- 8c304dd:ci: move the pinned actions onto the Node 24 runtime
- 02b1c11:docs: name the release line main, not master
- 810bbd2:ci: pin the functional-test server to a release whose watch API works
- d145647:fix: disable SUBNET connectivity and licensing upsell paths
- 5061c4f:rebrand: adopt Silo identity in CLI help and examples
- c7f7706:docs: align governance files and package metadata with the fork
- 65c71b2:test: default functional tests to a local server and add brand gate
- c62a64d:fix: credit both MinIO and PGSTY in copyright notices
- d205f88:docs: adopt no-CLA plus DCO contribution policy
- 95326ce:docs: add related-projects table and polish contribution wording
- d2c0db7:fix: remove the vendor encryption key and close the proxy-set path
- 0c6704d:fix: repair a link and help text damaged by the brand sweep