应用发布
当你要发布应用构件而不是 npm 包时,走这条路径。
当前仓库里有两类应用发布:
- Chrome 扩展 zip
- VSCode 扩展 VSIX
如果目标是 @modeldriveprotocol/browser-simple-mdp-client,不要走这页。这个 app 通过 NPM 包发布链路发版,而不是单独的构件发布 workflow。
Chrome 插件发布
当你要产出一个可下载的 Chrome 扩展 zip,并把它挂到 GitHub Release,且在仓库凭据已配置时同步提交到 Chrome Web Store 时,走这条路径。
操作步骤
- 更新
apps/chrome-extension/package.json里的版本号。 - 创建并推送类似
chrome-extension-v1.0.0的 tag。 - GitHub Actions 会触发
.github/workflows/chrome-extension-release.yml。
workflow 会先校验什么
- tag 版本是否和
package.json一致 - WXT 生成出的 manifest 版本是否和
package.json一致
workflow 会做什么
- typecheck 和 test
- 构建扩展打包依赖的共享 workspace packages
- 构建 Chrome 扩展
- 把
apps/chrome-extension/dist/chrome-mv3打成 zip - 在 workflow 内上传构件
- 在仓库凭据存在时刷新 Chrome Web Store API access token
- 把 zip 上传到配置好的 Chrome Web Store 条目并提交发布
- 创建或更新对应 tag 的 GitHub Release,并附上 zip
VSCode 插件发布
当你要把 VSIX 发布到 VS Code Marketplace,并同时挂到 GitHub Release 时,走这条路径。
操作步骤
- 更新
apps/vscode-extension/package.json里的版本号。 - 创建并推送类似
vscode-extension-v1.0.0的 tag。 - GitHub Actions 会触发
.github/workflows/vscode-extension-release.yml。
workflow 会先校验什么
- tag 版本是否和
apps/vscode-extension/package.json一致 - 仓库变量
VSCODE_EXTENSION_PUBLISHER是否存在
workflow 会做什么
- typecheck 和 test
- 构建扩展打包依赖的共享 workspace packages
- 构建 VSCode 扩展
- 打包
.vsix - 在 workflow 内上传
.vsix构件 - 把
.vsix发布到 VS Code Marketplace - 创建或更新对应 tag 的 GitHub Release,并附上
.vsix
仓库前置条件
- repository variable
CHROME_WEB_STORE_EXTENSION_ID - repository variable
CHROME_WEB_STORE_PUBLISHER_ID - secret
CHROME_WEB_STORE_CLIENT_ID - secret
CHROME_WEB_STORE_CLIENT_SECRET - secret
CHROME_WEB_STORE_REFRESH_TOKEN - repository variable
VSCODE_EXTENSION_PUBLISHER - secret
VSCE_PAT
打 tag 前的本地校验
bash
pnpm --filter @modeldriveprotocol/chrome-extension typecheck
pnpm --filter @modeldriveprotocol/chrome-extension test
pnpm --filter @modeldriveprotocol/protocol build
pnpm --filter @modeldriveprotocol/client build
pnpm --filter @modeldriveprotocol/chrome-extension build
pnpm --filter @modeldriveprotocol/vscode-extension typecheck
pnpm --filter @modeldriveprotocol/vscode-extension test
pnpm --filter @modeldriveprotocol/protocol build
pnpm --filter @modeldriveprotocol/client build
pnpm --filter @modeldriveprotocol/vscode-extension build