组件仓库模板 #379
ZCShou
started this conversation in
Code of Conduct
组件仓库模板
#379
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
组件模板说明文档
概述
本文档描述组件的完整目录结构、源码文件职责及标准模板规范,可作为其他 OS 组件的参考模板。
目录结构
测试与验证
组件必须独立可测试与验证。
本地测试
组件通过
./scripts/test.sh调用 axci 仓库中的统一测试框架。首次运行时自动下载 axci 到scripts/.axci/目录。基本用法:
过滤选项:
其他选项:
支持的测试类型:
cargo test --target <triple>--unit-targets x86_64-unknown-linux-gnu--suite axvisor-qemu-aarch64-arceos--suite axvisor-board-phytiumpi-arceos--suite starry-aarch64本地代码检查:
# 运行格式检查、clippy、构建、文档生成 ./scripts/check.shCI
本地测试环境有限,组件必须配置 CI 进行全面测试。所有 CI 工作流通过调用 axci 的共享工作流实现,组件侧只需编写简单的调用文件。示例如下:
使用示例
必须在组件的
examples/目录中提供组件的使用示例代码。示例目录结构
示例 Cargo.toml
示例代码规范
配置文件
.github/config.json
组件配置文件,用于 CI/CD 流程读取组件信息:
{ "component": { "name": "组件名称", "crate_name": "crate名称" }, "targets": [ "aarch64-unknown-none-softfloat" ], "unit_test_targets": [ "x86_64-unknown-linux-gnu" ], "rust_components": [ "rust-src", "clippy", "rustfmt" ] }component.namecomponent.crate_nametargetsunit_test_targetsrust_componentsCargo.toml
Crate 元数据和依赖配置:
文档规范
组件文档分为两个层次:设计文档(mdBook)和 API 文档(rustdoc)。
设计文档 (mdBook)
必须在组件的
docs/目录使用 mdBook 构建面向组件开发者、架构设计者和维护者的组件设计文档。文件结构:
文档源文件:
根据需要以子目录形式区分不同文档
本地构建:
写作要点:
API 文档 (rustdoc)
在编写源代码时,必须添加必要的
///注释,以便可以直接通过rustdoc生成面向组件使用者的 API 文档。文档位置:
src/lib.rs和各个模块的公开项上使用///注释//!注释说明模块职责#[doc(cfg(feature = "..."))]标记条件编译项API 文档示例:
写作要点:
README
默认 README.md 为英文版本,同时提供对应的中文版本 README_CN.md,两者的基本模板如下所示:
GitHub Workflows
check.yml — 代码检查
触发条件:push 到任意分支(tag 除外)、PR、手动触发
功能:
test.yml — 集成测试
触发条件:push 到任意分支(tag 除外)、PR、手动触发
功能:
release.yml — 发布
触发条件:push 版本 tag(
v*.*.*或v*.*.*-pre.*)流程:
verify-tag确保 tag 在正确分支上且版本号与 Cargo.toml 一致deploy.yml — 文档部署
触发条件:push 稳定版 tag(
v*.*.*,不含-pre.*)功能:
push.yml — 通知父仓库
触发条件:push 到 main 分支
功能:
CI 触发规则总览
v1.0.0v1.0.0-pre.1脚本文件
check.sh - 本地代码检查
执行内容:
.axci/目录axci/check.sh执行检查test.sh - 本地测试
执行内容:
.axci/目录axci/tests.sh执行测试可选文件
CHANGELOG.md - 版本变更日志
记录每个版本的变更内容,遵循 Keep a Changelog 格式:
CONTRIBUTING.md - 贡献指南
说明如何为项目做出贡献:
.cargo/config.toml - Cargo 配置
rust-toolchain.toml - Rust 工具链配置
组件源码
src目录下的组件源码必须符合 Rust 标准,并支持 rustdoc 生成 API 文档。源码结构
lib.rs//!),导出公开 API***.rs///注释公开项代码规范
//!说明模块职责///注释说明用法、参数、返回值、错误条件#[doc(cfg(feature = "..."))]标记特性门控项示例
标准开发工作流
编写或修改源代码
代码检查
构建及测试
生成文档
提交 PR
发布
Beta Was this translation helpful? Give feedback.
All reactions