尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
PeerTube 版本发布全流程指南:从迁移验证、全量构建到 GitHub Release 与 Embed API 发布
PeerTube 版本发布全流程指南从迁移验证、全量构建到 GitHub Release 与 Embed API 发布【免费下载链接】PeerTubeActivityPub-federated video streaming platform using P2P directly in your web browser项目地址: https://gitcode.com/gh_mirrors/pe/PeerTube本指南以 support/doc/development/release.md 为骨架结合 PeerTube 仓库根目录 package.json 中定义的脚本与 scripts/release.sh、scripts/release-embed-api.sh 等发布实现完整讲解 PeerTube 主版本与peertube/embed-api子包的发布流程。读完本文你将掌握发布前的迁移检查方法、多语言构建验证、CI 与 E2E 测试门槛、npm run release的完整执行链路以及嵌入式播放器 API 的独立发版步骤。PeerTube 主版本发布前的准备正式执行发布命令之前需要完成三项收尾工作它们是保证发布质量的第一道门槛修复剩余的关键 Bug发布分支上不允许残留影响用户的关键缺陷这是合入master前的硬性要求。确保法语翻译 100% 覆盖原文档特别强调法语翻译需要完整覆盖 JoinPeerTube 博客文章中出现的界面文案保证宣传场景下界面语言完整。更新根目录的 CHANGELOG.md发布脚本会从 CHANGELOG 中自动提取本次版本的更新说明见下文发布脚本解析因此 CHANGELOG 中必须存在以## v版本号开头的条目否则发布说明会提取失败或为空。从 scripts/release.sh 的实现看CHANGELOG 不仅用于记录更是发布说明的数据源脚本用awk按版本号头## v...截取对应章节并把结果作为 GitHub Release 的--description上传同时在执行前将提取内容打印出来供人工确认。数据库迁移检查用 benchmark-startup 验证新旧分支PeerTube 的数据库使用 Sequelize ORM见 package.json 中sequelize与sequelize-typescript依赖每次版本升级都可能引入新的数据迁移。发布文档给出了一个可复用的对比验证流程分别在master旧版本与develop新版本上编译并启动服务器确保服务端在应用迁移后能够正常初始化。npm run clean:server:test git checkout master rm -rf ./node_modules npm run install-node-dependencies npm run build:server NODE_APP_INSTANCE6 NODE_ENVtest node dist/server --benchmark-startup git checkout develop rm -rf ./node_modules npm run install-node-dependencies npm run build:server NODE_APP_INSTANCE6 NODE_ENVtest node dist/server --benchmark-startup逐条拆解这条命令链npm run clean:server:test调用 scripts/clean/server/test.sh它并行执行三类清理dropdb/createdb重建peertube_test1~peertube_test6六个数据库并创建pg_trgm、unaccent扩展删除./test1~./test6、config/local-test*.json与 CLI 配置缓存通过redis-cli清空bull-127.0.0.1:900X*等队列键端口从 9001 起按实例递增。rm -rf ./node_modules npm run install-node-dependencies彻底清空并重装依赖。install-node-dependencies在 package.json 中定义为pnpm install --frozen-lockfile配合 pnpm-lock.yaml 实现完全可复现的依赖树。npm run build:server编译服务端到dist/build:server对应 scripts/build/server.sh。NODE_APP_INSTANCE6 NODE_ENVtest node dist/server --benchmark-startup以测试环境加载 config/test-6.yaml 启动服务器。--benchmark-startup选项定义在 server/server.ts其语义是初始化完成后自动停止服务器因此只要命令能正常退出而非报错就说明当前代码版本在干净数据库上可以成功完成迁移并启动。旧版本master能启动、新版本develop也能启动才能确认迁移链路没有回归。全量构建验证确认所有支持的语言都能编译发布前还需要执行一次全量构建验证国际化资源没有破坏任何目标语言的编译产物rm -rf node_modules rm -rf client/node_modules npm run install-node-dependencies npm run build这里的npm run build对应 scripts/build/index.sh它先执行build:server再执行build:client。脚本中的注释解释了为何必须串行Angular 不支持 project references因此服务端与客户端无法并发构建。客户端构建会处理 client/src/locale 下的全部语言文件数十个angular.*.xlf、player.*.json、server.*.json任何语言文件格式损坏都会在这一步暴露。预发布验证实例升级与测试矩阵更新预发布实例构建通过后需要先将 beta 实例peertube2.cpy.re升级到新版本并验证其正常运行作为真实环境下的冒烟测试。CI 与 E2E 测试门槛发布文档明确要求两道测试全部通过CI 测试对应根目录 scripts/ci.sh覆盖 lint、单元测试与集成测试可通过npm run ci触发。E2E 测试需要同时运行BrowserStack 云端测试与本地 E2E 测试分别由 scripts/e2e/browserstack.sh 和 scripts/e2e/local.sh 驱动测试用例位于 client/e2e/src包含suites-all、suites-local等目录覆盖视频上传、播放、账户、管理后台等关键用户路径。执行正式发布发布命令GITHUB_TOKENmy_token npm run release -- 1.x.xnpm run release在 package.json 中指向 scripts/release.sh。传入的1.x.x即为本次发布的版本号。整个脚本的执行链路如下前置校验必须提供GITHUB_TOKEN环境变量用于调用 GitHub Release API当前分支必须是develop或release/*否则直接退出。预发布识别版本号包含-alpha.、-beta.或-rc.时自动标记为 pre-release对应 GitHub Release 的--pre-release选项并且不会更新master分支。CHANGELOG 提取与确认从 CHANGELOG.md 提取## v1.x.x章节作为发布说明打印后等待输入y确认。版本号更新分别对client/package.json与根package.json执行npm version --no-git-tag-version --no-commit-hooks并提交这两个文件与 support/doc/api/openapi.yaml这就是发布文档中更新openapi.yaml版本步骤的落点随后创建带 GPG 签名的 git taggit tag -s。源码级构建执行npm run build -- --source-map产出带 source map 的客户端与服务端产物并清理stats.json与所有.d.ts/.d.ts.map声明文件。归档与签名按固定清单dist/、client/dist/、config/、packages/*/dist/、support/doc、support/nginx、pnpm-lock.yaml等打包peertube-v1.x.x.zipzip -9 最大压缩与peertube-v1.x.x.tar.xzXZ_OPT-e9 -T0多线程极值压缩并使用维护者 GPG 公钥默认583A612D890159BE可通过MAINTAINER_GPG覆盖对两个归档分别生成 ASCII 签名文件。发布到 GitHub推送 tag创建 Release依次上传 zip、zip.asc、tar.xz、tar.xz.asc 四个文件脚本特意在创建与上传之间sleep 2避免因 Release 尚未生效导致上传失败。合入 master 与发布类型包仅正式版合并develop/release/*到master并推送重新构建含声明文件的 server登录 npm 后通过generate-types-packagepackages/types-generator/generate-package.ts生成并发布peertube/types类型包最后把 tar 归档与签名scp到官方构建服务器。发布完成后创建发布分支git checkout -b release/1.x.x git push origin release/1.x.x为后续 hotfix 提供独立的稳定分支。人工检查 Release到 GitHub Releases 页面核对归档文件、签名与发布说明是否齐全正确。线上实例升级先将生产实例peertube3.cpy.re升级并验证随后升级其余全部实例观察运行状态。发布收尾更新版本索引正式发布几天后等待各实例升级完成需要更新 JoinPeerTube 网站的版本信息接口/api/v1/versions.json让官网的最新版本数据与本次 Release 对齐。这是整个发布流程的最后一步用来保证对外展示的版本信息准确。peertube/embed-api 的独立发布除了 PeerTube 主版本嵌入式播放器 API 作为一个独立的 npm 包单独发版。在仓库根目录执行cd client/src/standalone/embed-player-api npm version patch cd ../../../../ npm run release-embed-api这段流程的要点版本策略npm version patch只递增补丁号因为 embed-api 的 API 面很小player.ts、events.ts、definitions.ts改动以增量演进为主如需破坏性变更才考虑 bump minor/major。npm run release-embed-api对应 scripts/release-embed-api.sh进入 client/src/standalone/embed-player-api 执行npm run build该包的 package.json 中 build 脚本为tsc编译类型声明 vite build --mode production打包产物随后npm publish --access public公开发布最后清理dist、build、node_modules临时产物。产物约定包名为peertube/embed-apimain指向./dist/player.jstypes指向./dist/player.d.ts供第三方站点以 JavaScript API 方式与 PeerTube 播放器 iframe 通信初始化、事件订阅、方法调用等能力定义在 client/src/standalone/embed-player-api/README.md 中。小结PeerTube 的发布体系可以概括为三层验证 两条发布通道发布前通过迁移启动检查、全量多语言构建、CI/E2E 双测试验证质量发布时由 scripts/release.sh 一条命令完成版本号更新、签名归档、GitHub Release 上传、master 合并与类型包发布主版本之外peertube/embed-api通过 scripts/release-embed-api.sh 独立迭代。掌握这套流程无论是维护 PeerTube 实例的升级节奏还是参与上游开发贡献都能清晰地知道每个版本从代码到用户的全生命周期。【免费下载链接】PeerTubeActivityPub-federated video streaming platform using P2P directly in your web browser项目地址: https://gitcode.com/gh_mirrors/pe/PeerTube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Oracle 游标 open v_cur 报错?让走 TaoToken 的 Codex 对着 PL/SQL 循环查

Oracle 游标 open v_cur 报错?让走 TaoToken 的 Codex 对着 PL/SQL 循环查

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

📅 2026/9/21 14:13:03
CC Switch 切 TaoToken:Claude Code 的模型名单一次换完再回滚

CC Switch 切 TaoToken:Claude Code 的模型名单一次换完再回滚

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

📅 2026/9/21 14:13:03
统信UOS上编译内核跑Anbox:从binder配置到APK安装完整指南

统信UOS上编译内核跑Anbox:从binder配置到APK安装完整指南

我最近在一台统信UOS系统的机器上完整走了一遍Anbox路线,从内核编译到安卓APP装进系统,中间踩了不少Linux发行版特有的坑。老实说,UOS虽然和Debian系沾亲带故,但它在内核、安全中心、软件源这几个环节都有自己的脾气,网…

📅 2026/9/21 14:13:03
MORE NEWS

更多资讯

📰

Harness Engineering 里的 Prompt Chain 跑拆解任务:Key 用 TaoToken

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

📰

Anthropic 工具链的 Agent SDK,Base URL 改到 TaoToken 再跑研究智能体

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

📰

把 Kimi Code CLI 的模型通道改到 TaoToken 通道之后,Agent Skills 自动加载

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

📰

TanStack Table Column_RowSorting 接口完全解析:列级行排序 API 的实现原理与实战指南

TanStack Table Column_RowSorting 接口完全解析:列级行排序 API 的实现原理与实战指南 【免费下载链接】table 🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table 项目地…

📰

RxJS 4 的 `Rx.Observable.repeat` 深入解析:固定值重复发射、调度器与源码实现

RxJS 4 的 Rx.Observable.repeat 深入解析:固定值重复发射、调度器与源码实现 【免费下载链接】RxJS The Reactive Extensions for JavaScript 项目地址: https://gitcode.com/gh_mirrors/rxj/RxJS 导读 Rx.Observable.repeat 是 RxJS 4(Reactiv…

📰

FreshRSS 用户管理实战指南:账号创建、自注册开关、邮箱验证与 ToS 配置

后端前端CLI 【免费下载链接】FreshRSS A free, self-hostable news aggregator… 项目地址: https://gitcode.com/gh_mirrors/fr/FreshRSS 点击查看 免费下载 导读 本文是 FreshRSS 管理员系列文档中关于用户管理(User management)的深度实…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬