openUBMC社区新建仓库指南
在开源社区中贡献代码、共享组件,是推动技术进步和生态繁荣的重要方式。在openUBMC社区中,每一个APP都需通过一个独立的代码仓库进行管理。本文旨在为希望在openUBMC社区中创建新仓库的开发者或贡献者,提供一份完整、清晰的操作指南。无论您是希望贡献一个全新的功能模块,还是计划将一个现有项目迁移到社区,遵循本指南将帮助您高效地完成从构思、评审到最终集成的全流程,让您的创意与努力顺利融入社区中。
新增组件评审
根据社区运作规则,组件创建者需要向社区TC申请,在TC例会中评审并通过后才可以创建。为了保证会上评审的质量和效率,需要在会前准备好以下信息,以便TC委员更好地评估申请。
- **组件的名字和职责:**需要明确组件的名字和职责,以及组件的实现思路、长期发展是否符合社区整体方向。
- **组件所属的SIG:**需要明确组件的归属,建议提前与你认为合适的SIG组Maintainer进行讨论。如果希望新增SIG,可以将SIG申请和组件申请合并成一个议题。
- **组件的License:**如果组件涉及引入三方库,需要明确其使用的License,确保新增组件使用的License符合社区规范。
- **组件的编程语言:**主要用于评估当前社区CICD是否支持,若不支持则需要与Infra、CICD持续合作确保组件可被覆盖。
!NOTE注意: 可以利用SIG例会、社区邮件、社区论坛等途径提前沟通,确保会前便得到一些TC委员的支持,增加会上评审的通过率。
创建仓库
当完成社区评审后,需要通过community仓库完成仓库的自动创建。
每个SIG的目录中,都会存在两个文件,分别是sig-info.yaml(保存SIG组信息)和repo-info.yaml(保存SIG组对应的Repo仓库信息)文件。所有由该SIG管理的代码仓库,其信息都记录在这两个对应的YAML文件中。
修改对应的代码文件,提交PR时附上TC评审结论即可,TC委员将在1-2个工作日内合入PR。
repo-info.yaml
repo-info.yaml 文件描述了 SIG 组的仓库信息,包含如下基本元素:
| 名称 | 类型 | 说明 |
|---|---|---|
| name | 字符串 | 仓库名称 |
| description | 字符串 | 仓库包含组件的描述 |
| type | 枚举类型,可选 public 或者 private | 仓库是否可公开访问 |
在某些场景下,如果不想在仓库ready前正式公开,可以在创建的时候选择private,默认SIG的Maintainer有权限访问仓库,并通过Maintainer邀请加入仓库。
例:
- name: mdb_interface
description: "Resource collaboration APIs definition"
type: public
sig-info.yaml
sig-info.yaml 文件描述了 SIG 组的人员和权限信息,针对新增组件,如果无需单独配置Committers,则无需改动。**默认所有Maintainer都拥有该仓库的合入权限。
如果需要配置Committers,则需要修改repositories配置:
| 名称 | 类型 | 说明 |
|---|---|---|
| repo | Array | 需要独立配置的仓库名称列表 |
| committers | Array | 该仓库配置的Committers列表 |
例:
repositories:
- repo:
- openUBMC/repo_1
- openUBMC/repo_2
committers:
- gitcode_id: committer_1
name: Committer 1 Name
- gitcode_id: committer_2
name: Committer 2 Name
组件CICD配置
当PR合入后,大约1小时内社区机器人便会完成仓库创建,接下来需要完成CICD配置,确保组件PR可被合入。
社区所有的CI门禁设置都在openubmc-ci仓库进行管理。
ci-repos
openUBMC社区CI设置较为复杂,详情请参考openubmc-ci仓库的文档。此处仅提供最初始的配置方法。
- 在
ci-repos目录下,创建一个与组件仓同名的文件夹。 - 在该文件夹下,创建
config.yaml文件,配置组件的门禁开关。
name: dcmid # 组件名
codecheck: false
it: false
ut: false
poison: false
sca: false
coverage: false
build: false
version_check: false
ipmi_check: false
dependency_check: false
line_limit_check: false
model_check: false
header: false
!NOTE注意 初始化阶段建议将门禁项关闭,避免在组件未准备好时被门禁拦截。
- 提交PR并合入后,完成组件的初始化和构建脚本开发。
- 构建脚本ready后,再根据实际情况打开各门禁项。
总结
在openUBMC社区创建一个新的仓库,远不止是在代码托管平台上点击“新建”按钮。它是一个严谨的社区协作过程,旨在确保每一个新增组件都能与社区的整体技术方向、质量标准和协作规范保持一致。
回顾整个流程,关键在于三个核心步骤:
- **充分的会前沟通与评审准备:**在正式向TC提交申请前,通过与SIG例会、邮件讨论、论坛等方式明确组件的定位、归属和合规性,不仅能提升TC评审会的效率,更能显著增加提案通过的成功率。
- **通过配置化方式实现仓库管理:**配置化管理社区组件有效地避免了人为操作带来的不确定性,同时也为长期维护提供了有效的方式。
- **渐进式地集成CICD:**根据实际情况进行组件的CICD配置,既保证前期能够快速地完成组件创建,又能持续保障组件的代码合入质量。
总而言之,这份指南不仅是一套操作说明,更体现了openUBMC社区对开放、透明和高质量协作的追求。我们鼓励每一位开发者在贡献代码的同时,也积极融入社区的治理流程。希望本文能成为您参与openUBMC社区建设的得力助手,期待您的精彩贡献。
如果您在流程中遇到任何问题,欢迎通过社区论坛、邮件列表或相应的SIG频道寻求帮助。社区的成功,离不开每一位成员的积极参与和共同努力。
【版权声明】Copyright © 2026 openUBMC Community。本文由openUBMC社区首发,欢迎遵照CC-BY-SA 4.0协议规定转载。转载时敬请在正文注明并保留原文链接和作者信息。
【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
