新闻详情

新闻详情

首页 / 资讯中心 / 详情

Sentry JavaScript SDK 发布流程实战指南:从 changelog 到 release 分支与自动化发布

发布时间:2026/9/25 2:36:30来源:尧图网络
Sentry JavaScript SDK 发布流程实战指南:从 changelog 到 release 分支与自动化发布
可观测性【免费下载链接】sentry-javascriptOfficial Sentry SDKs for JavaScript项目地址https://gitcode.com/gh_mirrors/se/sentry-javascript点击查看免费下载导读本文围绕 sentry-javascript 仓库的 release 技能文档 及其背后完整的 发布文档 展开系统讲解发布一个新版本含首次发布新 SDK所需的分支操作、changelog 生成与整理、PR 合并方式以及基于 GitHub Actions 的自动化发布链路。读完本文你将掌握yarn changelog等关键命令的底层实现原理、prepare-release/VERSION分支的正确切法与提交规范并理解 Gitflow 分支模型在发布流程中的具体落地方式。一、发布流程总览谁在什么时机触发发布动作由 Sentry 内部员工在准备发布新版本时执行。流程的核心脉络是先改 changelog、再切分支、开 PR 合入 master、最终由自动化接管发布可以分为两条路径常规新版本发布当前 master 分支在develop上生成 changelog 并切出prepare-release/VERSION分支开 PR 合入master随后由 Auto Prepare Release 工作流 自动接管。历史大版本previous majors或预发布版本alpha / beta直接基于对应分支如v8、9.7.0-alpha切出changelog-8.45.1这类分支合并后需手动通过 Prepare Release 工作流 触发发布。整个模型的背景是仓库采用的 Gitflow 分支模型日常开发发生在develop准备发布时把develop合入master并发布发布成功后再把master同步回developmaster上的内容始终代表最近一次已发布的 SDK 状态。下图清晰展示了这一流转关系二、标准发布流程的八个步骤release 技能文档 将标准发布浓缩为如下步骤每一步都对应具体命令或操作确保位于develop且为最新代码。如有未保存的工作先用git stash -u暂存。生成 changelog运行yarn changelog需要复制输出时用yarn changelog | pbcopymacOS 下可直接存入剪贴板。**依据 semver 顶部确认当前版本再根据本次变更决定版本递进策略——包含新功能则递增 minor仅含 bug 修复则递增 patch。切分支基于develop创建prepare-release/VERSION例如prepare-release/8.1.0。更新 CHANGELOG.md将上一步生成的 changelog 输出写入新版本条目具体排版规则见下文更新 Changelog一节注意不要删除已有条目。提交提交信息固定为meta(changelog): Update changelog for VERSION。推送分支并提醒用户开一个指向master的 PR。收尾如果原本不在develop分支上切回去并视需要git stash pop恢复暂存内容。三、更新 Changelog从生成到排版3.1 生成命令的底层原理package.json中注册了两个相关脚本package.jsonyarn changelog实际执行tsx ./scripts/get-commit-list.tsyarn generate-changelog执行tsx ./scripts/generate-changelog.ts负责尽力格式化best-effort formatting。看 get-commit-list.ts 的源码可以理解yarn changelog做了什么执行git log --format- %s获取全部提交找到最近一次meta(changelog)提交的位置只取它之后的提交过滤掉Merge pull request、Merge branch以及release:开头的合并/发布提交按字母序排序并把提交信息中的#PR号替换为指向 PR 的链接格式[#PR号](https://github.com/getsentry/sentry-javascript/pull/PR号)后输出。而 generate-changelog.ts 则进一步做结构化处理它解析CHANGELOG.md中## Unreleased段落getUnreleasedSection把已有条目按类型归类——包含**feat/**fix的归入Important ChangesisImportantEntry以chore/ref/test/meta开头的归入Internal ChangesisInternalCommit其余归入Other Changes随后再从git log中补充尚未写入 changelog 的新提交最终按字母序输出完整的 Markdown 段落generateOutput。3.2 手写整理时的排版规则发布文档 规定无论自动生成还是手动整理新版本条目都必须遵循以下格式新建一个以版本号命名的小节粘贴生成的 changelog 输出。重要的功能或修复放在### Important Changes子标题下若没有重要变更则不要出现该小节。一旦使用了Important Changes其余所有面向用户的变更必须放在### Other Changes子标题下。纯内部变更如无用户可见影响的ref重构、测试、chore放入details折叠块summary写 Internal Changes见下方示例。注意标为ref/chore但实际有用户可见影响的变更应留在主 changelog 正文不应放入内部变更区。所有条目按字母序排列。若包含外部贡献者的 PR需在条目下方追加一行Work in this release contributed by 贡献者用户名列表. Thank you for your contributions!。只有一位外部贡献者时去掉末尾的s三位及以上使用牛津逗号。仓库内有一个 External Contributors GitHub Action 会在外部 PR 合入时自动在Unreleased区生成该行可直接剪切粘贴但建议仍做一次人工核对。3.3 标准 Changelog 条目示例发布文档给出了如下可复制的完整示例docs/publishing-a-release.md## 9.28.0 ### Important Changes - **feat(nestjs): Stop creating spans for TracingInterceptor ([#16501](https://github.com/getsentry/sentry-javascript/pull/16501))** With this change we stop creating spans for TracingInterceptor as this interceptor only serves as an internal helper and adds noise for the user. - **feat(node): Update vercel ai spans as per new conventions ([#16497](https://github.com/getsentry/sentry-javascript/pull/16497))** This feature ships updates to the span names and ops to better match OpenTelemetry. This should make them more easily accessible to the new agents module view we are building. ### Other Changes - fix(sveltekit): Export vercelAIIntegration from sentry/node ([#16496](https://github.com/getsentry/sentry-javascript/pull/16496)) details summary strongInternal Changes/strong /summary - ref(node): Split up incoming outgoing http handling ([#17358](https://github.com/getsentry/sentry-javascript/pull/17358)) - test(node): Enable additionalDependencies in integration runner ([#17361](https://github.com/getsentry/sentry-javascript/pull/17361)) /details Work in this release was contributed by agrattan0820. Thank you for your contribution!3.4 版本号确定的语义参考步骤 3 中按 semver 决定版本号的判据是包含新功能时递增 minor仅 bug 修复时递增 patch。当前仓库的 CHANGELOG.md 顶部即为最新版本号当前为11.0.0之后的Unreleased区确认版本号时应以该文件顶部为准。遇到 breaking changes 等跨版本变更仓库还维护了 MIGRATION.md 与 docs/migration 目录如 v9-to-v10、v10-to-v11 迁移指南供发布说明参考。四、PR 的合并方式与自动化发布4.1 常规发布master 路径PR 标题固定为meta(changelog): Update changelog for VERSION目标分支为master。注意合入master的 PR 必须使用Merge Commit合并提交方式合并——发布文档对此特别标注了 Be cautious!docs/publishing-a-release.md。PR 合入后会自动触发Auto Prepare Release 工作流运行在 master 上随后在发布仓库Sentry 内部的publish仓库生成一个新的 issueissue 中附有 CI 检查运行的链接。等待 CI 全部通过后在 issue 上打上accepted标签即表示批准发布发布完成后会自动触发一次master→develop的同步。4.2 历史大版本与预发布版本alpha / beta发布文档单列了此路径docs/publishing-a-release.md在目标分支如v8或9.7.0-alpha上运行yarn changelog确定版本。从该分支切出如changelog-8.45.1的临时分支。更新CHANGELOG.md后开 PR 指向对应的历史分支如v8。注意合入历史分支的 PR 使用Squash and Merge方式合并因为相关提交已存在于该分支上。合并后手动打开 Prepare Release 工作流填写以下三个参数后运行要发布的大版本分支major branch如v8或9.7.0-alpha要发布的版本号如8.45.1、9.7.0-alpha.1要合入的目标大版本分支major branch to merge into如v8、9.7.0-alpha。下图为该工作流运行表单的实际界面直观展示三个必填/可选参数的填写位置五、发布前的质量验证命令release 技能文档 明确列出发布前应执行的四条关键命令yarn changelog—— 生成 changelog 条目yarn lint—— 验证代码质量yarn test—— 运行测试套件yarn build:dev—— 验证构建。这些命令对应仓库根 package.json 中注册的脚本建议在提交 changelog 前依次跑一遍确保prepare-release/VERSION分支上的代码可发布。六、首次发布新 SDK专项检查清单如果目标是首次发布一个新 SDK例如新增一个 packagerelease 技能文档 要求遵循 new-sdk-release-checklist.md清单内容与技能流程不符时需提醒用户。该清单覆盖发布前准备、正式发版、发布后跟进三个阶段6.1 发布前准备项目完整度package 正确导出必需模块有可用的单元测试环境构建产物正确检查package/build目录。README.md包含正确的 SDK 名称与简介、指向 NPM 包的徽章、alpha/beta 状态说明若未稳定、安装配置说明或链接到父级 SDK 文档、额外信息如 sourcemap 上传方式。LICENSE文件存在且为 MIT并在package.json中同步声明。tarball 内容yarn build:tarball产物至少包含build/cjs/entrypoint.js或build/npm/cjs/...、build/esm/entrypoint.js或build/npm/esm/...、build/types/entrypoint.d.ts或build/npm/types/...、package.json入口与实际文件结构一致、LICENSE、README.md及其他应打包的文件。推荐把 tarball 用yarn add path/to/tarball.tar.gz装到测试应用里验证完整性。CI 配置build.yml覆盖新包测试若是浏览器 SDK需加入 scripts/ci-unit-tests.ts 的BROWSER_TEST_PACKAGES确认 Upload Artifacts job 包含新产物路径新增 CDN bundle 时尤其重要。依赖关系若新包是 Remix、NextJS 等全栈框架 SDK 的依赖需加入集成测试应用package.json的resolutions字段。仓库登记把新包加入仓库根 README、GitHub Issue 的 bug 模板并在仓库中创建名为Package: foobar的 label。6.2 正式发版注意合并顺序清单强调各步骤的合并顺序至关重要且都应在新 SDK 确定纳入下一个即将发布的版本后进行移除 SDKpackage.json中的private: true并设置publishConfig: {access: public}。在craft.yml中为新包添加npm目标放在该包所有 Sentry 依赖之后、依赖该新包的包之前- name: npm id: sentry/[yourPackage] includeNames: /^sentry-[yourPackage]-\d.*\.tgz$/在craft.yml中添加registry目标Craft 会自动在 Sentry Release Registry 中创建目录结构与初始 manifestname: Sentry [Package] SDK sdkName: sentry.javascript.[package] packageUrl: https://www.npmjs.com/package/sentry/[package] mainDocsUrl: https://docs.sentry.io/platforms/javascript/guides/[package]/ onlyIfPresent: /^sentry-[package]-\d.*\.tgz$/按上文标准发布流程正式发版。6.3 发布后跟进确认包已成功发布到 NPM确认 SDK 已加入 Sentry Release Registry 的 npm packages 与 SDK symlinks缺失则按该 registry 的说明补充持续监控 GitHub 上新的 bug 报告与反馈。七、常见注意事项小结master 合并方式常规 changelog PR 用 Merge Commit历史分支的 changelog PR 用 Squash and Merge切勿混淆。package.json 冻结根据 Gitflow 文档 的说明发布进行期间develop上可以合入任何改动唯独不能改 package.json——否则 release 时 master 上更新的 package.json 会在 master → develop 的同步 PR 中引发合并冲突。合并冲突兜底若 master → develop 的自动化同步 PR 出现冲突可关闭该自动 PR基于master新建分支如manual-develop-sync把develop以 merge commit 方式合入并解决冲突再向develop开 PR 并同样用 merge commit 合并。发布面向人群上述完整流程含 Auto Prepare Release 触发与accepted标签审批仅对 Sentry 内部员工开放外部贡献者通常只参与 changelog 内容本身。赞分享可观测性【免费下载链接】sentry-javascriptOfficial Sentry SDKs for JavaScript项目地址https://gitcode.com/gh_mirrors/se/sentry-javascript点击查看免费下载相关推荐LobeHub Minor Release 工作流实战指南从 canary 分支到 v2.2.0 的自动化发布全流程LobeHub Minor Release 工作流实战指南从 canary 分支到 v2.2.0 的自动化发布全流程 本指南以 LobeHub 仓库中的 Mi人工智能AI 应用大模型AI Agent多智能体工具调用前端后端Boilerplates 发布流程实战指南从 release PR 到版本标签的自动化发布工作流Boilerplates 发布流程实战指南从 release PR 到版本标签的自动化发布工作流 Boilerplates 是面向 HomeLab 与自托管基CLI开发工具代码生成Streamlit 核心发布与补丁流程release/* 分支、GitHub Actions 自动化与发布值守实战Streamlit 核心发布与补丁流程release/ 分支、GitHub Actions 自动化与发布值守实战 本篇指南基于 streamlit 仓库的 w数据可视化后端前端上一篇3种方式快速播放Flash文件Ruffle模拟器实用指南下一篇SkyEmu 开源项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

机械硬盘坏道分析与屏蔽处理实战指南 2026/9/25 5:14:56

机械硬盘坏道分析与屏蔽处理实战指南

1. 机械硬盘故障分析及损坏处理(坏道屏蔽):这不是修硬盘,是给硬盘做临终关怀你手头那块用了三年以上的机械硬盘,最近开始出现文件复制卡死、系统蓝屏报错0x0000007B、Windows磁盘检查反复提示“发现坏扇区”&#xff0…

阅读更多 →
Humanizer Truncator 截断器使用指南:用 3 个静态实例与 4 种扩展方法精确控制字符串长度 2026/9/25 5:14:44

Humanizer Truncator 截断器使用指南:用 3 个静态实例与 4 种扩展方法精确控制字符串长度

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 导读 …

阅读更多 →
MikroORM Entity Generator 完全指南:从已有数据库 Schema 反向生成 TypeScript 实体 2026/9/25 5:14:44

MikroORM Entity Generator 完全指南:从已有数据库 Schema 反向生成 TypeScript 实体

后端 【免费下载链接】mikro-orm TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases. 项目地址: https://gitcode.com/gh_mir…

阅读更多 →
LS-DYNA多节点计算的许可证配置与故障排查实战 2026/9/25 5:14:44

LS-DYNA多节点计算的许可证配置与故障排查实战

1. 先搞清楚问题:为什么LS-DYNA多节点计算老是卡在许可证上这些年我经手过不少LS-DYNA的部署和算例优化,发现一个特别普遍的现象:很多工程师拿到一套新配置,第一反应是把求解器的关键字文件调好、把CPU核数拉到满,然后…

阅读更多 →
Rsuite 虚拟化长列表 ListProps 全解:itemSize、滚动初始偏移与渲染回调 2026/9/25 5:14:44

Rsuite 虚拟化长列表 ListProps 全解:itemSize、滚动初始偏移与渲染回调

前端UI组件 【免费下载链接】rsuite 🧱 A suite of React components . 项目地址: https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 导读 在 React 组件库 rsuite 中,当需要渲染数千乃至上万条数据(如 CheckPicke…

阅读更多 →
Cursor AI编辑器使用文档:TaoToken统一Key接入与settings.json配置骨架 2026/9/25 5:14:43

Cursor AI编辑器使用文档:TaoToken统一Key接入与settings.json配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉