Backstage v1.2.0-next.2 变更详解:Scaffolder 用户引用、人类可读任务调度与搜索高亮增强

发布时间:2026/9/13 2:27:13

Backstage v1.2.0-next.2 变更详解:Scaffolder 用户引用、人类可读任务调度与搜索高亮增强 Backstage v1.2.0-next.2 变更详解Scaffolder 用户引用、人类可读任务调度与搜索高亮增强【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage本文基于 docs/releases/v1.2.0-next.2-changelog.md 解读 Backstage 1.2.0 系列第二个预发布版本next.2的核心变更。该版本横跨 Scaffolder、后端公共库、任务调度、目录提供者、搜索与 TechDocs 等多个模块既带来了template.yaml中引用当前用户、Rails 动作镜像白名单等 Scaffolder 关键能力也通过人类可读的持续时间对象简化了任务调度配置并为搜索索引引入了结果高亮与更大的批量写入。读完本文你将理解这些变更的用法、破坏性影响以及它们在当前仓库源码中的落地位置能够据此评估和升级自己的 Backstage 实例。一、变更总览v1.2.0-next.2 涉及数十个 npm 包的依赖联动更新其中有实质行为变更Minor / BREAKING的模块如下绝大多数包仅同步了依赖版本Patch模块版本变更类型核心内容backstage/plugin-codescene0.1.0-next.0Minor新增 CodeScene 插件backstage/plugin-scaffolder-backend1.2.0-next.1Minor支持在template.yaml中引用当前用户backstage/plugin-scaffolder-common1.1.0-next.0Minor同步用户引用相关的类型能力backstage/plugin-scaffolder-backend-module-rails0.4.0-next.1MinorBREAKING新增allowedImageNames白名单选项backstage/backend-common0.13.3-next.2PatchReadUrlResponse新增stream()新增ReadUrlResponseFactorybackstage/backend-tasks0.3.1-next.1PatchTaskScheduleDefinition支持人类可读持续时间对象backstage/plugin-search-backend-module-elasticsearch等-Patch索引批量由 100 提升至 1000支持高亮字段backstage/plugin-techdocs-react0.1.1-next.2Patch新增SettingsAddon 位置下文按主题深入展开有实操价值的变更。二、Scaffolder在 template.yaml 中引用当前用户变更f8baf7df44为backstage/plugin-scaffolder-backend1.2.0-next.1与backstage/plugin-scaffolder-common1.1.0-next.0同时加入了在软件模板清单template.yaml中引用当前执行用户的能力。这解决了此前模板参数中无法直接获取谁在创建这一关键上下文的问题使得生成内容可以自动带上创建者信息例如写入 README 作者、配置归属人、为仓库添加 owner 等。后端实现位于 plugins/scaffolder-backend用户信息在任务执行上下文中被解析并注入模板输入类型与数据结构定义位于 plugins/scaffolder-common供前后端共享关于entityRef形式的实体引用用法可参考 plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.ts其中演示了entityRef: component:default/name与批量entityRefs的写法是理解 Scaffolder 引用体系的良好起点。需要说明的是该能力在 next 版本中以 Minor 形式引入最终随 v1.2.0 正式发布如果你在模板中依赖$user这类上下文变量请确保升级后的scaffolder-backend与scaffolder-common版本一致二者在本版本中成对更新避免类型不匹配。三、Scaffolder Rails 动作新增 allowedImageNames 白名单破坏性变更3d001a3bcf为backstage/plugin-scaffolder-backend-module-rails0.4.0-next.1引入了BREAKING选项allowedImageNames。在此之前Rails 动作的imageName输入可以任意指定镜像名此后任何镜像名都必须先列入allowedImageNames才能被接受。升级注意事项如果你在软件模板中使用了rails:new动作并传入了imageName升级后必须同步提供allowedImageNames列表否则执行会因镜像未授权而失败该选项的意图是限制 Scaffolder 容器环境可拉取/使用的镜像来源属于安全收口应只放行受信任的镜像名称该模块的实现位于 plugins/scaffolder-backend-module-rails其package.json同时依赖backstage/plugin-scaffolder-backend1.2.0-next.1说明它直接复用 Scaffolder 后端核心的执行框架。四、backend-commonReadUrlResponse 流式读取与 ReadUrlResponseFactory变更e0a6360b80为backstage/backend-common0.13.3-next.2补齐了 URL 读取的流式接口ReadUrlResponse新增stream()方法与既有的buffer()方法互补允许以流式方式消费远程内容适合大文件或逐块处理场景新增ReadUrlResponseFactory工具类为UrlReader.readUrl()的实现方提供统一、简单的响应构造方式避免各集成各自拼装对象。变更日志明确提示stream()目前虽然是可选的但在未来的某个版本中将成为UrlReader.readUrl()实现的必需方法。这意味着自定义UrlReader的开发者应当尽早适配。该工具类的当前实现位于 packages/backend-defaults/src/entrypoints/urlReader/lib/ReadUrlResponseFactory.ts配套测试见 packages/backend-defaults/src/entrypoints/urlReader/lib/ReadUrlResponseFactory.test.ts可以作为编写自定义 Reader 的参考样例。五、backend-commonGoogle Cloud Storage 的 UrlReader.search() 支持变更4b811aafce为 Google Cloud Storage 实现了UrlReader.search()方法。受底层存储 API 限制当前仅支持基于前缀的搜索例如https://storage.cloud.google.com/your-bucket/some-path/*也就是说search()的通配符只允许出现在路径末尾*后缀无法像文件系统那样做任意位置的通配匹配。GCS 集成的其余解析与配置逻辑可在 packages/integration 中查看。六、任务调度用人类可读对象替代 luxon Duration变更73480846dd是本版本对所有使用者都友好的改进backstage/backend-tasks的TaskScheduleDefinition现在允许直接使用包含days、hours、minutes、seconds等字段的对象来描述频率与超时而不再强制import { Duration } from luxon。升级写法对照来自变更日志原文-import { Duration } from luxon; // omitted other code const schedule env.scheduler.createScheduledTaskRunner({ - frequency: Duration.fromObject({ minutes: 10 }), - timeout: Duration.fromObject({ minutes: 15 }), frequency: { minutes: 10 }, timeout: { minutes: 15 }, // omitted other code });从当前仓库源码看这一能力已沉淀进正式 APIpackages/backend-plugin-api/src/services/definitions/SchedulerService.ts 中SchedulerServiceTaskScheduleDefinition.frequency的类型为Duration | HumanDuration | { trigger: manual }或 cron 字符串timeout为Duration | HumanDurationcron 支持可选的秒字段* * * * * *六段格式。当前版本还额外支持{ cron: ... }写法见下文 GitHubOrgEntityProvider 示例比 next.2 时更加完善。配套变更ebbec677e1还修正了任务下次运行时间的计算逻辑避免某些边界条件下调度偏移。七、GitHubOrgEntityProvider支持 schedule 选项变更a7de43f648让GitHubOrgEntityProvider.fromConfig像其他实体提供者一样支持schedule选项从而可以直接接入公共任务调度器backend-tasks周期性刷新 GitHub 组织成员数据无需自行编写定时逻辑。变更日志给出的用法如下原文档示例位于packages/backend/src/plugins/catalog.tsbuilder.addEntityProvider( GitHubOrgEntityProvider.fromConfig(env.config, { id: production, orgUrl: https://github.com/backstage, schedule: env.scheduler.createScheduledTaskRunner({ frequency: { cron: */30 * * * * }, timeout: { minutes: 10 }, }), logger: env.logger, }), );这里的frequency同时体现了第六节的成果cron 表达式与人类可读对象可以混合使用。该提供者的实现位于 plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts同目录下的GithubEntityProvider、GithubMultiOrgEntityProvider也是同类实体提供者的参考实现。八、搜索结果高亮与批量索引性能提升1. 搜索结果高亮匹配词变更3a74e203a8贯穿搜索全链路从search-backend-module-elasticsearch生成高亮字段到search-common/search-react传递高亮数据再到各前端组件渲染。启用方式来自变更日志原文档针对packages/app/src/components/search/SearchPage.tsx- {results.map(({ type, document }) { {results.map(({ type, document, highlight }) { switch (type) { case software-catalog: return ( CatalogSearchResultListItem key{document.location} result{document} highlight{highlight} / ); case techdocs: return ( TechDocsSearchResultListItem key{document.location} result{document} highlight{highlight} / ); default: return ( DefaultResultListItem key{document.location} result{document} highlight{highlight} / ); } })}涉及包backstage/plugin-catalog、backstage/plugin-techdocs、backstage/plugin-search、backstage/plugin-search-react、backstage/plugin-search-common、backstage/plugin-search-backend-module-elasticsearch等均在本版本中同步更新。2. 索引批量由 100 提升至 1000变更71d3432710将搜索索引写入的批量大小从 100 提升到 1000search-backend-module-elasticsearch与search-backend-module-pg均生效。变更日志明确提示影响索引运行期间后端可能略微增加内存占用但大型文档集合的索引性能会显著提升。如果你运行的是大目录实例升级后应留意后端内存曲线。九、create-app 模板改进更易维护的脚手架backstage/create-app0.4.27-next.2带来四项模板级改进搜索 collator 调度简化与第六节一致移除模板中luxon依赖改用人类可读对象。若你的实例中luxon仅用于调度可一并移除packages/backend/package.json中的luxon: ^2.0.2并将packages/backend/src/plugins/search.ts中的Duration.fromObject(...)全部替换为{ ... }对象含initialDelay.dockerignore优化由原来只放行packages/backend/dist改为按目录排除源码与 node_modules新增后端包时无需再手工维护排除规则cypress microsite node_modules - packages - !packages/backend/dist packages/*/src packages/*/node_modules plugins示例 catalog 数据模板新增顶层examples目录包含简单实体、组织数据与一个软件模板方便新项目开箱即有演示数据搜索结果高亮模板应用同步接入第八节的highlight渲染。十、TechDocsAddon 生态起步Settings 位置与 TextSize本版本是 TechDocs Addon 机制的重要里程碑backstage/plugin-techdocs1.1.1-next.2在文档页面的 sub header 中新增菜单用于承载渲染 TechDocs Addon变更52419be116backstage/plugin-techdocs-react0.1.1-next.2新增名为Settings的 Addon 位置专门留给自定义阅读体验类的 Addonbackstage/plugin-techdocs-module-addons-contrib0.1.0-next.2提供了首个内置 AddonTextSize允许用户把文档正文字号写入浏览器 localStorage。在 Backstage 应用中启用TextSize的写法来自变更日志import { DefaultTechDocsHome, TechDocsIndexPage, TechDocsReaderPage, } from backstage/plugin-techdocs; import { TechDocsAddons } from backstage/plugin-techdocs-react/alpha; import { TextSize } from backstage/plugin-techdocs-module-addons-contrib; const AppRoutes () { FlatRoutes // other plugin routes Route path/docs element{TechDocsIndexPage /} DefaultTechDocsHome / /Route Route path/docs/:namespace/:kind/:name/* element{TechDocsReaderPage /} TechDocsAddons TextSize / /TechDocsAddons /Route /FlatRoutes; };自研 Addon 的声明方式来自plugin-techdocs-react变更说明const TextSize techdocsModuleAddonsContribPlugin.provide( createTechDocsAddonExtension({ name: TextSize, location: TechDocsAddonLocations.Settings, component: TextSizeAddon, }), );同时backstage/plugin-techdocs-addons-test-utils0.1.0-next.1修复了 DOM 中含img /标签时无法测试 Addon 的问题并允许通过继承TechDocsAddonTester定制测试配置为 Addon 开发者提供了测试基础。十一、其他值得关注的补丁Kubernetes 插件plugin-kubernetes0.6.5-next.2、plugin-kubernetes-backend0.5.1-next.1、plugin-kubernetes-common0.2.10-next.0新增 Azure Identity 认证提供者与 AKS 仪表盘格式化器1ef98cfe48Catalog 后端plugin-catalog-backend1.1.2-next.2修复isGroupEntity返回值类型16a40ac4c0parseEntityTransformParams支持包含.的字段键如backstage.io/origin-location可基于带点的 annotation 查询实体2909746147CLIbackstage/cli0.17.1-next.2create-github-app命令新增读写权限交互提示简化 GitHub App 创建流程632be18bbc可访问性core-components0.9.4-next.1、plugin-catalog-react1.1.0-next.2Select 组件支持键盘操作55f68c386a、Sidebar NAV 增加aria-label、AboutField 改用 h2 变体2bcb0a0e2b、过滤器菜单项支持键盘访问57f41fb8d6Azure DevOpsplugin-azure-devops0.1.21-next.2 等新增 Azure Git Tags 实体视图ac14fcaf38Org 插件plugin-org0.5.5-next.2修复EntitiyMembersListCard在特定屏幕宽度与名字长度组合下的溢出问题dfee1002d7Bazaar 插件plugin-bazaar0.1.20-next.2导出SortView组件供直接复用84c9e35a2f。十二、升级建议Rails 动作使用者优先处理allowedImageNames是唯一标注 BREAKING 的变更升级后立即生效需先配置白名单自定义 UrlReader 作者提前适配stream()未来将成为必需方法建议在升级backend-common时一并实现拥抱人类可读调度若项目未在其他地方使用luxon可按第六、九节移除该依赖并替换调度写法降低依赖面搜索大目录实例关注内存批量从 100 提到 1000 后观察索引运行期的内存占用TechDocs 用户可选启用 TextSizeAddon 机制已可用可按第十节接入。完整的包级依赖变更矩阵含所有 Patch 级依赖联动见 docs/releases/v1.2.0-next.2-changelog.md 原文正式版 v1.2.0 的最终说明见 docs/releases/v1.2.0.md。【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/13 2:27:13

Apache Fesod流式Excel引擎:替代EasyExcel的高性能方案

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

2026/9/13 2:27:13

Nimbus-2 HRIR L1条带数据解析:从HDF5结构到Python处理

我第一次打开Nimbus-2 HRIR的L1条带数据时,愣了一下。这个HDF5文件干净得像刚生成的现代产品——根属性里写着卫星名、仪器名、版本号,ScienceData组里躺着辐射率,Geolocation组里躺着经纬度和扫描时间。可它记录的却是上世纪六十年代的一天夜…

2026/9/13 3:12:15

Arm mango是什么:嵌入式SDK成熟度评估核心机制解析

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

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码