跳转到主要内容

mcli 20260806 发布

客户端全面切换为 Silo 身份:所有 MinIO SUBNET 外联路径在构建期永久关闭,移除内置的厂商诊断加密公钥,贡献政策改为无 CLA + 强制 DCO 签署。

发布日期: 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 registermcli support uploadmcli support proxy setmcli 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|statusmcli support proxy show|removemcli license infomcli license unregister 照常工作 —— 它们只读取或清除本地与服务端配置。
  • 全新生成的配置不再自动写入指向 MinIO 公共演示集群的 play 别名,默认别名为 locals3gcs。已有配置文件永远不会被修改,旧版配置迁移逻辑仍识别历史条目。
  • 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/checkout v7、actions/setup-go v7、goreleaser-action v7 及 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#5139mirror --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