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

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

发布时间:2026/9/25 2:36:32 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

BentoCloud SAML 单点登录配置指南:为组织接入企业身份认证
BentoCloud SAML 单点登录配置指南:为组织接入企业身份认证

模型推理服务人工智能后端大模型MLOpsLLMOps 【免费下载链接】BentoML The easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more! 项目地址: https://gitcode.com/gh_mirrors/be/BentoM… · 2026/9/25 2:36:32

Spinnaker Orca 部署监控(Deployment Monitor)接入指南:受监控部署策略的第三方健康评估机制
Spinnaker Orca 部署监控(Deployment Monitor)接入指南:受监控部署策略的第三方健康评估机制

后端DevOps云原生微服务 【免费下载链接】spinnaker Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence. 项目地址: https://gitcode.com/gh_mirrors/sp/spinnaker 点击查… · 2026/9/25 2:36:32

hibase32-cj API完整参考:6个核心函数的参数、返回值与用法示例速查
hibase32-cj API完整参考:6个核心函数的参数、返回值与用法示例速查

hibase32-cj API完整参考:6个核心函数的参数、返回值与用法示例速查 【免费下载链接】hibase32-cj Base32(RFC 4648)编码/解码库 项目地址: https://gitcode.com/Cangjie-TPC/hibase32-cj hibase32-cj 是一个使用仓颉语言实现的 Base32(RFC 4648&… · 2026/9/25 2:36:32

Xray 共享工作区与基于能力的 RPC 系统设计:从 2018 年 4 月 9 日周报看协作编辑的底层实现
Xray 共享工作区与基于能力的 RPC 系统设计:从 2018 年 4 月 9 日周报看协作编辑的底层实现

开发工具 【免费下载链接】xray An experimental next-generation Electron-based text editor 项目地址: https://gitcode.com/gh_mirrors/xray/xray 点击查看 免费下载 Xray 在 2018 年 4 月 9 日的更新周报中记录了共享工作区(Shared Workspaces&… · 2026/9/25 3:07:03

零广告靠社媒:独立站卖数字材料月入数万美元的运营拆解
零广告靠社媒:独立站卖数字材料月入数万美元的运营拆解

1. 项目拆解:卖“材料”的独立站到底是一门什么生意1.1 “材料”是什么,为什么能卖出高溢价先说说“材料”这个引号。很多人看到“卖材料”第一反应是卖钢筋水泥,或者是卖布料皮革,但做独立站的人听到这个词,脑子里想的… · 2026/9/25 3:07:03

HowToGraphQL React+Relay 教程实践:用 PaginationContainer 实现游标分页
HowToGraphQL React+Relay 教程实践:用 PaginationContainer 实现游标分页

【免费下载链接】howtographql The Fullstack Tutorial for GraphQL 项目地址: https://gitcode.com/gh_mirrors/ho/howtographql 点击查看 免费下载 本文基于 HowToGraphQL(The Fullstack Tutorial for GraphQL)仓库中 React Relay 教程的… · 2026/9/25 3:07:03

AOS Community Edition 基础篇:AOS、Astrid Runtime 与 Forge 的分层模型及最小持久化工件选型
AOS Community Edition 基础篇:AOS、Astrid Runtime 与 Forge 的分层模型及最小持久化工件选型

【免费下载链接】aos-ce AOS Community Edition: the open agent operating system. 项目地址: https://gitcode.com/gh_mirrors/ao/aos-ce 点击查看 免费下载 本文基于 AOS Community Edition(下称 AOS CE)中 Forge 胶囊内置的作者手册首章… · 2026/9/25 3:06:57

Apache DataFusion 50.0.0 版本解析:QUALIFY 子句、Parquet 元数据缓存与查询引擎关键改进
Apache DataFusion 50.0.0 版本解析:QUALIFY 子句、Parquet 元数据缓存与查询引擎关键改进

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 Apache DataFusion 50.0.0 是围绕 SQL 查询引擎核心能力的一次大版本更新,累计合… · 2026/9/25 3:06:57

CTF-Wiki Linux 内核驱动编译实战:从 LKM 源码到可装载内核模块的完整构建流程
CTF-Wiki Linux 内核驱动编译实战:从 LKM 源码到可装载内核模块的完整构建流程

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 导读 在 Linux Kernel Pwn 的题目中,漏洞往往隐藏在内核模块(Loadable Kernel Modu… · 2026/9/25 3:06:57

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

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

企业微信二维码