命令行
发布软件包
从已经完成版本修改的清单和变更日志重新建立发布执行计划,再按依赖关系发布软件包。
smif publish 面向版本与变更日志修改已经存在的软件包。它不依赖 version 已经消费的变更集。
smif publish --dry-run
smif publish启用生成的 GitHub Actions 后,合入准备好的发布拉取请求会通过 smif ci 触发推荐的发布路径。同一次发布不要再从本地重复执行。
规划与发布前检查
Semifold 读取当前清单与变更日志,通过工作区图排列软件包,展开配置命令,并在启动发布命令前执行所有可用的软件包仓库检查。缺少变更日志、已经存在的版本和软件包策略都会成为明确的跳过原因。
私有软件包只跳过软件包仓库预检和发布命令。有效的私有状态优先采用软件包级 publish,缺省时才采用清单或插件发现结果。私有软件包默认不创建 GitHub Release;显式配置 github-release = true 并启用 --github-release 时,仍会创建 Release 和上传附件。只有没有任何代码托管平台工作需要执行时,最终状态才会显示为私有软件包跳过。
HTTP 检查把 200 视为版本存在、404 视为不存在,其他状态码会安全失败。命令检查使用配置的 JSON Lines 契约。
执行
对于符合条件的软件包,Semifold 按依赖顺序运行发布前命令和发布命令。最终报告分别列出成功、跳过、失败和尚未开始的软件包,让部分失败可以基于事实重试。
| 选项 | 行为 |
|---|---|
--dry-run | 运行只读检查,跳过软件包仓库与代码托管平台修改;只有明确允许预演的配置命令会执行。 |
--allow-dirty | 接受当前工作区差异作为有意的发布输入。 |
--github-release | 创建配置的 GitHub Release 并上传附件;只能在持续集成中使用。 |
如果软件包仓库中已经存在目标版本,对应发布命令会被跳过。启用 GitHub Release 后,Semifold 仍可补建缺失的 Release;已经存在的 Release 不会重新上传缺失附件。