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] Copyright © 2026 openUBMC Community. This article was first published by the openUBMC Community. Reproduction is welcomed under CC-BY-SA 4.0. When reproducing, please prominently note the source in the text and retain the original article link and author information.
[Disclaimer] The views expressed in this article are solely those of the author and do not represent the stance of this website. This website remains neutral regarding the statements and opinions presented and provides no express or implied warranty as to the accuracy, reliability, or completeness of the content. This article is intended for reference only, and all legal responsibilities arising therefrom shall be borne by the reader.
