惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

博客园 - 张占岭

keycloak~缓存对象的介绍与作用 wso2-apim-mcp2改版分析 mcp1和mcp2对比 为什么前端项目使用ts比js要多了 多个IDP的用户联合方案的分析 apisix~forward-auth外部认证 apisix~response-rewrite响应头重写 springboot~关于构造方法注入和字段注入的选择 apisix~OpenResty各阶段的介绍 keycloak~aud受众字段的作用及如何生成 wso2~关于workbuddy中mcp在wso2中的授权端点 k8s~避免调度资源碎片化 WEB安全~csrf介绍 WEB安全~DPoP的介绍 WEB安全~csp的介绍 什么是中间人攻击 WEB安全~xss的介绍 k8s~pod资源限制和JVM的XMX配置 关于对wso2和keycloak的token交换的调研 keycloak~实现OAuth 2.0 Token Exchange backstage~实体的介绍及它们的关系 backstage~openapi的接入与protobuf的对比 backstage~对接github和gitlab backstage~开始一个backstage应用 apisix~graphQL的支持 wso2几个核心项目介绍 docker~BuildKit的介绍 k8s~secret资源的使用 算法~时间戳计算两个日期是否为同天同时同分 wso2~4.5升级到4.6需要更新的数据表
backstage~将java服务添加到backstage
张占岭 · 2026-04-16 · via 博客园 - 张占岭

要将GitHub上的Java项目添加到Backstage平台管理,您需要完成两个主要步骤:创建catalog-info.yaml文件并在Backstage中注册该组件。

添加GitHub Java项目到Backstage的步骤

  1. 在Java项目中创建catalog-info.yaml文件

    • 在项目的根目录下创建名为catalog-info.yaml的文件
    • 按照Backstage的实体格式定义您的组件信息
  2. 在Backstage UI中注册组件

    • 登录Backstage平台
    • 点击左上角的"CREATE"按钮
    • 选择"REGISTER EXISTING COMPONENT"
    • 在表单中填入catalog-info.yaml文件的GitHub URL地址(例如:https://github.com/your-org/your-java-project/blob/main/catalog-info.yaml
    • 点击"ANALYZE"和"IMPORT"完成注册

catalog-info.yaml文件定义详解

基本结构

catalog-info.yaml文件使用YAML格式,遵循Backstage的实体描述规范。一个典型的Java项目组件定义如下:

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: your-java-service  # 组件的唯一名称
  description: 处理用户认证和授权的Java微服务  # 组件描述
  annotations:
    github.com/project-slug: your-org/your-java-project  # GitHub仓库地址
  labels:
    business-unit: engineering  # 业务单元标签
  tags:
    - java
    - spring-boot
    - microservice
spec:
  type: service  # 组件类型:service、website、library等
  lifecycle: production  # 生命周期阶段:experimental、production、deprecated
  owner: team-backend  # 负责团队
  system: order-system  # 所属系统(可选)
  domain: ecommerce-domain  # 所属领域(可选)
  providesApis:
    - default/user-auth-api  # 提供的API
  dependsOn:
    - resource:default/user-database  # 依赖的资源
    - component:default/notification-service  # 依赖的其他组件

关键字段说明

字段 说明 示例
apiVersion Backstage实体规范版本 backstage.io/v1alpha1
kind 实体类型 Component(最常用)
metadata.name 组件唯一标识符 user-profile-service
metadata.description 组件功能描述 处理用户配置文件的Java服务
metadata.annotations 自定义注解 github.com/project-slug: org/repo
spec.type 组件类型 service(服务)、website(网站)、library(库)
spec.lifecycle 生命周期阶段 experimentalproductiondeprecated
spec.owner 负责团队 team-backend(需对应Group实体)
spec.system 所属系统 payment-system(可选)
spec.domain 所属领域 finance-domain(可选)

Java项目专用配置示例

对于Java项目,您可以添加技术栈相关的标签和注解:

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: order-processing-service
  description: 基于Spring Boot的订单处理微服务
  annotations:
    github.com/project-slug: company/order-service
    backstage.io/techdocs-ref: dir:./docs  # 指向技术文档目录
    jenkins.io/job-url: https://jenkins.company.com/job/order-service
  labels:
    language: java
    framework: spring-boot
    database: postgresql
  tags:
    - java-17
    - spring-boot-3.x
    - postgresql
    - kafka
spec:
  type: service
  lifecycle: production
  owner: team-ecommerce
  system: order-management-system
  providesApis:
    - default/order-api
    - default/payment-api
  dependsOn:
    - component:default/product-catalog-service
    - resource:default/order-database
    - resource:default/redis-cache

相关说明文档定义

文档入口(docs/mkdocs.yml):

site_name: Keycloak Report System Documentation
site_description: Keycloak 扩展平台文档
site_author: Engineering Team

nav:
  - 首页: index.md
  - 系统概述: overview.md
  - 功能模块:
    - 客户端会话统计: features/clients-sessions.md
    - Infinispan 缓存管理: features/infinispan-cache.md
    - URL 访问排名: features/url-ranking.md
    - 风险账号管理: features/user-limit.md
    - 所需动作管理: features/required-action.md
  - API 文档: api.md
  - 部署指南: deployment.md
  - 开发指南: development.md

plugins:
  - techdocs-core

然后可以在相应目录中添加说明文件,如features目录

相关实体定义

为了让组件完整工作,您可能还需要定义相关的Group(团队)和System(系统)实体:

团队定义示例(teams/backend-team.yaml):

apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
  name: team-backend
  description: 后端开发团队
spec:
  type: team
  profile:
    displayName: Backend Team
    email: backend-team@company.com
  parent: engineering-department

系统定义示例(systems/order-system.yaml):

apiVersion: backstage.io/v1alpha1
kind: System
metadata:
  name: order-management-system
  description: 订单管理系统
spec:
  owner: team-ecommerce
  domain: ecommerce-domain

最佳实践建议

  1. 文件位置:将catalog-info.yaml文件放在项目根目录,与pom.xml或build.gradle同级
  2. 命名规范:使用kebab-case命名(如user-profile-service
  3. 注解使用:充分利用注解集成其他系统(CI/CD、监控、文档等)
  4. 依赖声明:明确声明组件间的依赖关系,便于依赖分析
  5. 生命周期管理:根据项目实际状态设置正确的lifecycle值

完成catalog-info.yaml文件编写并提交到GitHub后,Backstage会自动扫描并加载该组件,您可以在Backstage UI中查看组件的详细信息、依赖关系、文档和运行状态等。