workspace publish
workspace publish 将远程 draft 发布为新版本。online 表示版本已发布且可获取;版本能否在 Server 执行或下载到 macOS/Windows 由 draft 中固化的 executionTargets 决定。同一 workflow 的发布请求会串行分配版本号,避免并发请求复用同一个版本。版本号由 Server 管理,CLI 不再支持手动 --version。
对带已确认关联项目的 Kanban,传入 --project-group 或 --dependency 会先从本地源码创建并上传项目组,再直接发布该部署。它与 upload --publish-group 使用同一 project-group v1 协议;included 项目先发布,根 Kanban 最后激活。已有部署则只使用 publish --deployment <id> 继续发布,不能同时传入本地路径或项目组创建参数。
Kanban 发布不执行依赖安装、前端构建或 runtime 构建,并始终以 source 模式保留 draft 中配置的 artifactDir、HTML entry 和全部已上传静态资源;即使传入 --source-mode bundled,服务器也会按 source 模式发布。开发者需要在上传前自行完成 Vue、React、Vite 等项目构建。
publish 基于顶层 package.json.id UUID 定位远程项目。CLI 会先读取本地 package 里的 UUID;如果 workflow 还没有绑定 server UUID,或当前账号不是项目 owner/manager 且没有全局发布权限,命令会直接失败。
命令格式
pnpm exec workflow-code workspace publish <workflow> [--release-log <text>] [--source-mode bundled|source] [--server-runtime|--no-server-runtime] [--desktop-platform macos|windows] [--project-group] [--path <workflow-dir>] [--dependency <alias>=<path>] [--create]
pnpm exec workflow-code workspace publish --deployment <id>
参数
| 参数 | 说明 |
|---|---|
<workflow> | 远程 workflow 名称。 |
--release-log <text> | 发布日志。未传时按 server 默认行为处理。 |
--source-mode <bundled|source> | Workflow/Conversation 固化到版本的源码模式。默认 bundled;Kanban 始终使用 source。 |
--server-runtime / --no-server-runtime | 显式声明 publish 的 Server 目标;必须与已准备 draft 一致,否则 Server 返回 409。 |
--desktop-platform <macos|windows> | 显式声明 Desktop 目标;可重复,必须与 draft 一致并使用 source。只传该参数时 CLI 会读取远端项目类型,Kanban 默认保持 Server 关闭。 |
--project-group | 从本地 Kanban 和选中的关联项目创建项目组,并在准备完成后直接发布。 |
--path <workflow-dir> | 项目组根 Kanban 的本地目录。 |
--dependency <alias>=<path> | 把双方已确认关系 alias 对应的本地项目作为 included 依赖;可重复。数据权限仍由双方 projectInfo 决定。 |
--create | 确保根项目和 included 依赖已在 Server 创建并绑定 UUID。 |
--deployment <id> | 继续发布已经准备好的项目组部署;必须单独使用,不读取本地项目。 |
API
| 步骤 | Endpoint |
|---|---|
| 发布 draft | POST /api/workflows/{workflow}/publish |
| 发布项目组 | POST /api/deployments/{deploymentId}/publish |
输出
| 情况 | 输出 |
|---|---|
| 发布成功 | server publish API JSON。 |
| 没有可发布 draft | server 返回错误 JSON,退出码为 1。 |
| 未登录 | 输出错误信息,退出码为 1。 |
示例
pnpm exec workflow-code workspace publish hello
pnpm exec workflow-code workspace publish hello --release-log "修复输入校验"
pnpm exec workflow-code workspace publish hello --server-runtime --desktop-platform macos --source-mode source --release-log "云端与 macOS"
pnpm exec workflow-code workspace publish hello --no-server-runtime --desktop-platform windows --release-log "Windows 本地发行"
pnpm exec workflow-code workspace publish stock-kanban \
--path ./stock-kanban \
--dependency stocks=./stock-workflow \
--release-log "发布股票看板项目组"
pnpm exec workflow-code workspace publish --deployment 00000000-0000-4000-8000-000000000010
注意事项
| 场景 | 说明 |
|---|---|
| 需要上传并立即发布 | 可使用 upload --release-log。 |
| 需要查看 latest | 使用 versions,其中 status 会显示 preparing/online/offline。 |
传入 --version | 当前 CLI 会报错,版本号由系统生成。 |
| 缺失 UUID 或未创建远程项目 | 先在 package 中声明合法 UUID;再执行 upload --create 按该 UUID 创建 Server 项目。 |
| 省略发行目标 | publish 沿用准备 draft 的策略;建议只在需要一致性断言时显式重传目标。 |
| 显式目标与 draft 不一致 | Server 返回 409,不会把无 runtime draft 误发为 Server 版本;请按准备时的同一参数重试或重新上传。 |
| 本地项目组直接发布 | 使用 --project-group 或至少一个 --dependency;publish 会完成打包、上传和发布,不需要再传 --publish-group。 |
| 项目组发布中断 | 使用部署记录中的 ID 重新执行 publish --deployment <id>;Server 会跳过已成功且 hash 一致的依赖,最后再激活根 Kanban。 |