首页/新闻资讯/正文详情

Native SDK 版本发布全流程指南:从版本号同步到 npm 可信发布

发布时间:2026/9/27 8:03:36 来源:云帆数科 栏目:资讯中心
Native SDK 版本发布全流程指南:从版本号同步到 npm 可信发布
桌面应用跨平台【免费下载链接】nativeToolkit for building native desktop apps项目地址https://gitcode.com/gh_mirrors/ze/native点击查看免费下载Native SDKnative-sdk/cli的发布是一套人工驱动的单 PR 流程由维护者在本地完成版本号提升、changelog 编写与 PR 合并随后 CI.github/workflows/release.yml自动完成跨平台交叉编译、GitHub Release 资产上传与九个 npm 包的分批发布。本文基于仓库根目录的 RELEASING.md 编写并结合 packages/native-sdk 下的版本同步脚本与 release.yml 工作流源码完整讲解准备一次发布 → 写好 changelog → CI 自动发布的每一步以及其中关键的版本一致性校验与 npm OIDC 可信发布配置。发布策略为什么是人工 单 PR仓库的发布模型非常明确Releases are manual, single-PR affairs——发布不依赖自动打 tag 的机器人而是由维护者在分支上完成全部准备工作后通过一个 PR 合并到main触发。这样设计的目的从 RELEASING.md 原文及源码推断在于维护者掌控 changelog 的措辞与格式发布说明的语气、分类和细节粒度由人决定而非自动生成的 commit 列表一次变更只走一个 PR版本号提升、changelog 条目、以及同步脚本对多处文件的改动全部收拢在同一个 PR 中便于 review 与回滚CI 负责机械性工作合并后流水线自动完成编译、发布和校验人工不触碰任何 npm 凭据。整个流程分为两段本地准备第 1 步到第 7 步与 CI 自动发布合并后触发。发布准备七步操作清单按 RELEASING.md 的步骤一次发布的本地准备如下创建分支例如prepare-v1.2.0提升版本号修改packages/native-sdk/package.json中的version字段当前仓库中为0.10.1见 package.json同步所有版本引用运行npm --prefix packages/native-sdk run version:sync审阅自上次发布以来的 git 历史在 CHANGELOG.md 顶部、新的## version标题下撰写完整的 changelog 条目并用!-- release:start --与!-- release:end --标记包裹填充条目的### Contributors从发布区间内的 commit 作者与Co-authored-by尾注中提取优先使用 GitHub handle这段被标记包裹的内容同时就是 GitHub Release 的正文移除上一条发布的!-- release:start --/!-- release:end --标记——只有最新一条发布允许保留标记打开 PR 并合并到main。第 3 步version:sync是保证一个版本号统治所有文件的关键下面单独展开。版本同步一个版本号八处落地version:sync由 scripts/sync-version.js 实现其注释开宗明义One version number rules them all。packages/native-sdk/package.json是唯一事实来源脚本把该版本号逐一写入以下位置落点文件路径说明CLI 源码tools/native-sdk/main.zig当前为const version 0.10.1;见 main.zig#L9native version命令输出的版本号8 个平台二进制包packages/native-sdk/npm/platform/package.json每个包的version字段同时把主包的repository.url与homepage一并复制过去主包 optionalDependencies 引脚packages/native-sdk/package.json8 个native-sdk/cli-*平台包的精确版本引脚如native-sdk/cli-linux-x64-gnu: 0.10.1打包的 TS 核心packages/core/package.json 与 packages/core/package-lock.jsonnative-sdk/core与 CLI 共享同一发布版本manifest 与 lockfile 的自引用版本字段都会被盖章已提交的 TS 示例examples/*/package.json自动发现并更新所有依赖native-sdk/core的示例的精确引脚引脚之所以全部使用精确版本而非区间是为了保证某个版本的native-sdk/cli安装到的二进制一定构建自同一个 commit 的源码——optionalDependencies的 8 个引脚精确到0.10.1主包落地时平台包必须已存在且版本一致。同时脚本还会传播仓库身份字段repository.url、homepage注释明确指出npm 会用repository.url校验发布 provenance若仓库改名只更新了主包而遗漏平台包发布会在 provenance 校验处失败。对应的校验脚本是 scripts/check-version-sync.js它逐项核对上述所有位置是否与主包版本一致并在 CI 发布前运行见下文。此外它还校验两处特殊引脚typescript/old即npm:typescriptX.Y.Z的别名引脚CLI 与packages/core必须使用完全一致的精确别名形式防止新安装的 CLI 解析到与开发环境不同的 TypeScript 编译器scriptc外部核心编译器同样是精确版本且两份 manifest 必须一致。任何一处漂移都会导致version:check报错并以非零退出码终止发布。编写 changelog格式、语气与标记约定CHANGELOG.md 是发布说明的唯一来源其书写规范如下分组标题按### New Features、### Bug Fixes、### Improvements等描述性标题归类条目格式每条 bullet 先给加粗的引导语如**JSON manifests by default**随后跟一句简洁描述末尾在可用时标注 PR 编号如(#385)禁止前缀不要用 commit hash 作为条目前缀覆盖完整区间条目必须覆盖自上次发布以来的完整 git 区间包括那些单独 PR 并未改动CHANGELOG.md的变更Contributors 来源从发布区间内 commit 作者与Co-authored-by尾注提取优先使用 GitHub handle。关于标记约定仓库现状可以验证规则最新发布条目当前为## 0.10.1由!-- release:start --与!-- release:end --包裹见 CHANGELOG.md#L5-L17更早的发布如## 0.10.0、## 0.9.5则没有标记——这正是只有最新发布保留标记规则的落地结果。CI 提取正文的方式见 release.yml用awk在两个标记之间截取内容写入临时文件并校验行数不少于 2否则报错退出。因此标记缺失或位置错误会直接阻断 GitHub Release 创建。CI 自动发布流水线合并到main后.github/workflows/release.yml 触发包含三个按依赖顺序执行的 job1. check-release决定要不要发在 ubuntu-latest 上运行把本地packages/native-sdk/package.json的版本与 npm 上的native-sdk/cli版本对比release.yml#L32-L80版本不同npm 上还没有这个版本→should_releasetrue同时需要创建 GitHub Release版本相同→ 检查v版本这个 tag 的 GitHub Release 是否已包含全部 8 个二进制资产与CHECKSUMS.txt资产齐全 → 跳过发布needs_github_releasefalse缺少任一资产 → 仅重建/补齐 GitHub Releaseneeds_github_releasetrue不重新发布 npm。这个分支设计保证了npm 已有该版本但 Release 资产缺失时CI 可以从标记的 changelog 条目重建 GitHub Release实现幂等修复。2. github-release交叉编译并上传资产在 macos-14 上运行条件为needs_github_release true先用 awk 提取 changelog 正文再执行 scripts/build-binaries.sh 用 Zig 交叉编译全部 8 个平台目标最后gh release create/gh release upload上传二进制与校验和。build-binaries.sh中的目标表build-binaries.sh#L20-L29给出了 npm 平台键、Zig 目标与 Release 资产名的完整对应关系npm 平台包Zig 目标GitHub Release 资产darwin-arm64aarch64-macosnative-sdk-darwin-arm64darwin-x64x86_64-macosnative-sdk-darwin-x64linux-arm64-gnuaarch64-linux-gnunative-sdk-linux-arm64linux-x64-gnux86_64-linux-gnunative-sdk-linux-x64linux-arm64-muslaarch64-linux-muslnative-sdk-linux-musl-arm64linux-x64-muslx86_64-linux-muslnative-sdk-linux-musl-x64win32-arm64aarch64-windowsnative-sdk-win32-arm64.exewin32-x64x86_64-windowsnative-sdk-win32-x64.exeZig 可以从任意宿主交叉编译全部 8 个目标脚本只构建 CLI 可执行文件zig build cli以保持循环快速。你也可以传平台键子集如build-binaries.sh darwin-arm64只构建部分目标。3. publish分批发布九个 npm 包在 ubuntu-latest 上、environment: Release中运行条件为should_release true且 GitHub Release job 成功或被跳过release.yml#L138-L255。步骤依次为版本一致性门禁npm run version:check即上文check-version-sync.js与scripts:check半吊子提升的提交树会被当场拒绝下载并校验二进制从 GitHub Release 下载 8 个资产sha256sum -c CHECKSUMS.txt验证完整性staging 到平台包按资产名 → 平台键的映射表与build-binaries.sh相同把二进制放入packages/native-sdk/npm/key/bin/native[.exe]并置为可执行分批发布顺序敏感先发布 8 个平台包packages/native-sdk/npm/*/每包npm publish --provenance --access public最后发布主包native-sdk/cli。已存在同版本号的包自动跳过npm view nameversion检查保证重跑幂等。这样做的原因主包的optionalDependencies精确引脚只有在所有平台包都已上线后才能解析成功native-sdk/core的发布开关packages/core/package.json中private: true字段本身就是发布开关——为 true 时跳过发布去掉该字段后同一段逻辑会开始发布该包无需改动工作流。注意在去掉标记之前必须先为native-sdk/core在 npmjs.com 配置好可信发布者否则首个公开版本会在该步失败。npm 可信发布OIDC无 token 的发布安全发布采用npm trusted publishingOIDC仓库中不存在任何 npm token 密钥。其原理是publish job 声明了id-token: write权限release.yml#L148-L150GitHub Actions 据此向 npm 换取短时凭证每次发布都带--provenance。一次性配置要求在 npmjs.com 上完成九个包native-sdk/cli加上packages/native-sdk/npm/下的 8 个native-sdk/cli-*平台包各自配置一个 GitHub Actions trusted publisher指向Repositoryvercel-labs/nativeWorkflowrelease.ymlEnvironmentRelease若某个包缺少该配置npm publish会针对该包大声失败抛出 OIDC 认证错误——不会静默跳过。可信发布还要求 npm ≥ 11.5.1由工作流使用的 Node 24 自带的 npm 满足。这套机制的收益是双重的既消除了 token 泄露面又因为每次发布都带--provenance消费者可以审计每个发布版本的构建来源。发布后的验证闭环一次成功的发布最终可验证的产物包括GitHub Releasev0.10.1标题、正文来自标记的 changelog 条目8 个二进制 CHECKSUMS.txtnpm 上native-sdk/cli-linux-x64-gnu等 8 个平台包os/cpu/libc字段由 npm/linux-x64-gnu/package.json 等清单声明如linux/x64/glibc最后上线的native-sdk/cli其optionalDependencies精确指向同版本的平台包仓库内tools/native-sdk/main.zig的const version、packages/core的 manifest 与 lockfile、各示例的引脚全部与主包版本一致由version:check强制。对维护者而言下次发布只需重复七步清单分支 → 提升版本 → version:sync → 写 changelog带标记→ 填 Contributors → 清理旧标记 → 合并 PR剩余的全交给流水线。参考路径速查发布流程文档RELEASING.md版本同步脚本packages/native-sdk/scripts/sync-version.js版本一致性校验packages/native-sdk/scripts/check-version-sync.js发布工作流.github/workflows/release.yml交叉编译脚本packages/native-sdk/scripts/build-binaries.sh主包清单packages/native-sdk/package.json平台包示例packages/native-sdk/npm/linux-x64-gnu/package.json变更日志CHANGELOG.mdCLI 版本号常量tools/native-sdk/main.zig#L9赞分享桌面应用跨平台【免费下载链接】nativeToolkit for building native desktop apps项目地址https://gitcode.com/gh_mirrors/ze/native点击查看免费下载相关推荐JSONEditor 版本发布全流程指南从版本号更新到 npm 发布JSONEditor 版本发布全流程指南从版本号更新到 npm 发布 导读 jsoneditor 是一个基于 Web 的 JSON 查看、编辑、格式化与校验工前端UI组件MediaElement.js 版本发布全流程从发布分支、版本号同步到 Grunt 构建与 npm 发布的实操指南MediaElement.js 版本发布全流程从发布分支、版本号同步到 Grunt 构建与 npm 发布的实操指南 本文以仓库根目录的 RELEASE.md音视频前端UI组件webamp 项目 npm 发布流程完全指南从版本号同步到 CI 自动化发布与 npm provenancewebamp 项目 npm 发布流程完全指南从版本号同步到 CI 自动化发布与 npm provenance 导读 本文以 .claude/skills/re前端音视频上一篇揭秘github-automated-repos工作原理GitHub API交互与数据处理流程下一篇性能调优检查清单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

智能合约大模型审计误报治理(False Positive Elimination):基于动态符号执行剪枝
智能合约大模型审计误报治理(False Positive Elimination):基于动态符号执行剪枝

智能合约大模型审计误报治理(False Positive Elimination):基于动态符号执行剪枝在智能合约自动化安全审计系统中,“误报率(False Positive Rate)过高” 是导致安全工程师对 AI 工具失去信心的头号痛点&… · 2026/9/27 8:03:36

wordpress阿帕奇伪静态避坑指南,这份速查手册救过无数人
wordpress阿帕奇伪静态避坑指南,这份速查手册救过无数人

wordpress阿帕奇伪静态避坑指南,这份速查手册救过无数人 刚接到个新单,客户急吼吼问为什么后台改了URL,前台404,后台又报500,备案信息还在审核中,人直接懵圈。别慌,这种“备案流程一头雾水”加上技术配置混乱的情况,我干了十年太常… · 2026/9/27 8:03:23

Puppet file_metadata HTTP 端点完全指南:掌握文件、目录与符号链接的元数据查询 API
Puppet file_metadata HTTP 端点完全指南:掌握文件、目录与符号链接的元数据查询 API

运维DevOpsIaC 【免费下载链接】puppet Server automation framework and application 项目地址: https://gitcode.com/gh_mirrors/pu/puppet 点击查看 免费下载 file_metadata 是 Puppet Server 内置的 HTTP API 端点,用于返回单个文件或多个文件的元数… · 2026/9/27 8:03:11

jspaint 无障碍化实战:深入解析 Tracky Mouse 头部追踪与驻留点击 API
jspaint 无障碍化实战:深入解析 Tracky Mouse 头部追踪与驻留点击 API

前端桌面应用图像处理 【免费下载链接】jspaint 🎨 Classic MS Paint, REVIVED ✨Extras 项目地址: https://gitcode.com/gh_mirrors/js/jspaint 点击查看 免费下载 本… · 2026/9/27 8:48:14

生产级 MySQL 死锁深度排障实战:Insert 唯一键冲突引发的 Next-Key Lock 锁升级死锁分析
生产级 MySQL 死锁深度排障实战:Insert 唯一键冲突引发的 Next-Key Lock 锁升级死锁分析

生产级 MySQL 死锁深度排障实战:Insert 唯一键冲突引发的 Next-Key Lock 锁升级死锁分析在互联网大厂高并发业务(如用户注册并发防重、工单创建流水号幂等、秒杀防超卖)的生产运维中,MySQL InnoDB 死锁(Deadlock&#… · 2026/9/27 8:48:14

KubeVela Operation 权限组件设计解读:用两个 ComponentDefinition 落地 invoke / operate / use 权限模型
KubeVela Operation 权限组件设计解读:用两个 ComponentDefinition 落地 invoke / operate / use 权限模型

云原生DevOps运维微服务 【免费下载链接】kubevela The Modern Application Platform. 项目地址: https://gitcode.com/gh_mirrors/ku/kubevela 点击查看 免费下载 本篇文章围绕 KEP-2.15(OperationTemplate 与 Operation)配套的权限设计文档… · 2026/9/27 8:48:14

AngularFire Cloud Messaging 实战指南:从 FCM 实例注册到服务端通知发送的完整实现
AngularFire Cloud Messaging 实战指南:从 FCM 实例注册到服务端通知发送的完整实现

后端 【免费下载链接】angularfire Angular Firebase ❤️ 项目地址: https://gitcode.com/gh_mirrors/an/angularfire 点击查看 免费下载 Firebase Cloud Messaging(FCM)让你能为每台设备注册唯一的 FCM token(Firebase Insta… · 2026/9/27 8:47:49

微前端大仓中的跨技术栈微模块热重载:基于 Vite 与 ESM 的秒级极速 HMR
微前端大仓中的跨技术栈微模块热重载:基于 Vite 与 ESM 的秒级极速 HMR

微前端大仓中的跨技术栈微模块热重载:基于 Vite 与 ESM 的秒级极速 HMR在大型微前端与 Monorepo 代码大仓的日常本地开发中,严重摧毁工程师“编码心流(Coding Flow)”的最主要元凶莫过于**“本地联调与模块热重载(HMR,… · 2026/9/27 8:47:49

Yao SUI 国际化(i18n)完整指南:翻译标记、语言包目录与 locale 检测机制
Yao SUI 国际化(i18n)完整指南:翻译标记、语言包目录与 locale 检测机制

Agent 框架后端低代码RAG 【免费下载链接】yao ✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted. 项目地址: https://gitcode.com/gh_mirrors/… · 2026/9/27 8:47:43

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码