Olares 应用分发完整指南:从 OAC 打包到 Olares Market 上架与生命周期管理
发布时间:2026/10/15 20:28:03 锦皓数字建站

云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载OlaresTerminus的应用分发体系建立在开放标准与自动化校验之上开发者将应用打包为Olares Application ChartOAC通过向官方应用索引仓库提交 Pull RequestPR即可发布到 Olares 应用市场。本文系统讲解应用分发的整体机制、提交与自动校验流程、发布后的生命周期管理更新/暂停/下架以及市场展示优化并结合仓库中framework/oac的源码实现剖析校验规则的底层原理帮助你完整掌握从打包到上架、再到持续维护的实战链路。开始之前四个核心概念在动手分发应用之前需要先理解 Olares 应用分发体系中的四个基础构件Olares Application ChartOACOlares 应用的打包格式用于描述应用的元数据、所有权、版本信息与安装配置。它基于标准 Helm Chart 结构并扩展了 Olares 独有的信息详见 Olares 应用 Chart 结构。应用索引App Index向 Olares 应用市场提供应用元数据的服务。Olares 提供默认的公共索引服务你也可以自行部署索引服务。Terminus-Gitbot自动验证系统负责校验提交的应用并执行分发规则解析 PR 标题、校验文件范围、所有权与版本规则通过后自动合并。Owners 文件owners位于 OAC 根目录、没有后缀名的特殊文件用于声明应用的所有权与权限。内容格式如下owners: - your-github-username - collaborator1-username - collaborator2-username仓库的 OAC 测试数据 中保存了真实的owners文件样例可以作为参考。控制文件控制分发状态的开关控制文件是位于 OAC 根目录中的特殊空文件用于控制应用的分发状态.suspend暂停应用分发.remove从应用市场移除应用。控制文件的详细规则版本约束、使用场景参见下文「管理应用生命周期」一节及 管理应用生命周期。所有权与协作如果要以团队形式协作维护应用有两种方式推荐将所有维护者添加到owners文件中。列表中的每个所有者都可以独立 Fork 仓库并提交针对该应用的更改将团队成员添加为你 Fork 仓库的协作者成员可以直接向你的 PR 分支提交代码。owners是分发权限的基石Terminus-Gitbot 在校验时以它为准判断提交者是否有权修改对应图表文件夹只有owners中列出的 GitHub 账号提交的改动才会被接受。应用分发流程总览Olares 应用分发的完整生命周期由五个阶段组成后续小节逐一展开准备应用包将应用打包为 OAC提交到默认索引向官方索引仓库提交 PR自动校验与索引Terminus-Gitbot 自动校验并合并管理应用生命周期通过 PR 更新、暂停或移除应用优化市场展示添加图标、宣传图与头图。第一步准备应用包打包为 OAC分发应用之前必须先将应用打包为Olares 应用图表OAC。在此阶段开发者通常需要完成以下工作在 Olares 主机上开发并测试应用验证应用的安装和升级行为完善 Chart 的元数据与目录结构。标准 OAC 目录结构如下详见 Olares 应用 Chart 结构AppName |-- Chart.yaml # chart 的元数据 |-- OlaresManifest.yaml # Olares 应用专属配置 |-- templates/ # 部署资源的模板 | |-- deployment.yaml # Deployment 资源定义 |-- owners # 提交到 Market 时必需列出允许维护与更新此应用的 GitHub 账号 |-- crds/ # 可选Custom Resource Definitions |-- values.yaml # 可选此 chart 的默认部署参数 |-- values.schema.json # 可选约束 values.yaml 结构的 JSON Schema |-- README.md # 可选关于该应用的可读文档其中Chart.yaml的name、version、apiVersion字段以及OlaresManifest.yaml中的metadata含name、icon、version等是后续自动校验的核心依据。为了让templates目录更易理解可以将部署拆分为多个模板文件。源码视角OAC 结构校验的实现OAC 的目录结构校验由 framework/oac/internal/chartfolder/folder.go 中的CheckLayout实现它依次检查目录名是否符合^[a-z0-9]{1,30}$只含小写字母与数字、不超过 30 字符目录存在存在Chart.yaml、values.yaml、templates/、OlaresManifest.yaml四个必需元素。同时 folder.go 中的isReservedWord维护了一份保留目录名清单如user、system、kube、gpu等系统保留词使用保留名会被直接拒绝CheckConsistency/CheckWithTitle还会将目录名、Chart.yaml的name、OlaresManifest.yaml的metadata.name与 PR 标题中的图表文件夹名做交叉一致性校验任何一处不一致都会报错。此外 framework/oac/internal/manifest/validate.go 中的validateAppMetaData强制要求metadata.name、metadata.icon、metadata.title、metadata.description、metadata.version均为必填项其中icon必须是合法的 http(s) URL、version必须是合法语义化版本号SemVer这正对应原文档中「完善 Chart 的元数据」的要求。第二步提交应用到默认索引Olares 应用市场从Git 仓库索引应用。要将应用发布到默认的公共索引需要向官方仓库beclab/apps的main分支提交一个拉取请求Pull RequestPR。提交过程有三个关键特征PR 标题用于声明操作类型NEW / UPDATE / SUSPEND / REMOVETerminus-Gitbot 验证文件范围、所有权和版本规则通过校验的 PR 会自动合并无需人工审核。提交新应用的操作步骤第一步添加 OAC 到你的 Fork 仓库Fork 官方仓库beclab/apps在 Fork 仓库中新建目录将 OAC 放入其中在 OAC 根目录创建无扩展名的owners文件并确保其中包含你的 GitHub 用户名。目录命名规范目录名即你的 OAC 目录名图表文件夹名Terminus-Gitbot 会用目录名解析 PR 标题并校验文件范围。目录名必须满足只包含小写字母与数字不包含连字符-长度不超过 30 个字符。这与源码中^[a-z0-9]{1,30}$的正则校验完全一致见 folder.go。第二步创建 Draft PR创建一个指向beclab/apps:main分支的Draft PR。Terminus-Gitbot 会同时校验 PR 元数据标题、文件作用范围与 Chart 内容OAC 根目录是否包含必需文件等。为通过自动校验PR 必须严格遵循以下规则标题格式标题必须清楚表明提交意图严格遵循[PR 类型][图表文件夹名][版本] 标题内容| 字段 | 说明 | |--|--| | PR 类型 |NEW提交新应用UPDATE更新已成功合并的应用REMOVE移除已成功合并的应用SUSPEND暂停已成功合并的应用在应用商店的分发 | | 图表文件夹名 | 你的 OAC 目录必须符合命名规范 | | 版本 | 应用的 Chart 版本必须与Chart.yaml中的version及OlaresManifest.yaml的metadata下的version一致 | | 标题内容 | 对 PR 的简要说明 |文件范围PR 只能新增或修改 PR 标题中声明的图表文件夹下的内容无重复 PR针对该图表文件夹不能存在其他 Open 或 Draft 状态的 PR目录结构正确针对新应用beclab/apps:main中不存在同名文件夹图表文件夹中不包含控制文件.suspend或.remove。Draft PR 可随时修改在 Draft 阶段可以继续提交 Commit 来调整文件。确认无误后点击Ready for review。第三步等待 Terminus-Gitbot 校验提交后 Terminus-Gitbot 会自动校验 PR若 PR 通过所有检查Terminus-Gitbot 会自动将其合并到beclab/apps:main稍等片刻应用就会出现在 Olares 应用市场。跟踪 PR 状态类型标签当 PR 被标记为NEW、UPDATE、REMOVE或SUSPEND时表示标题中的 PR 类型已被识别。警告标记后请勿更改 PR 类型。如果类型不符合预期请关闭该 PR 并新建一个 PR。状态标签| 标签 | 含义 | |--|--| |waiting to submit| 发现问题需要在合并前继续修改。可以继续提交 CommitTerminus-Gitbot 会重新检查并更新状态 | |waiting to merge| 通过所有检查PR 已进入自动合并队列。请勿提交新的 Commit 或手动干预 | |merged| PR 已合并到beclab/apps:main| |closed| PR 无效或存在无法修复的问题。请勿重新打开需修复问题后提交新的 PR |完整操作细节见 提交 Olares 应用。源码视角PR 校验的底层实现PR 自动校验的核心正是仓库中的 OAC 校验器oachecker。Lint是完整的校验入口见 framework/oac/chart.go按顺序执行以下检查文件夹布局检查chartfolder.CheckLayoutOlaresManifest.yaml 解析与结构校验ozzo 校验Chart 模板交叉检查权限声明与appdata/appCommon/sharedlib使用的一致性对apiVersionv3的应用禁止在模板或values.yaml中直接引用OLARES_USER_*环境变量名见 chartscan.go 中的checkV3OLARESUserInChart自定义校验器通过WithCustomValidator注册强制性的工作负载完整性检查不受任何 Skip 选项影响上传挂载路径、typeapp工作负载命名、workloadReplicas与渲染结果精确匹配、渲染出的spec.replicas必须跟踪workloads.name.replicaCount这样平台才能将应用缩容到零、overlayGateway 入口工作负载必须存在hostPath 卷 rolling-update 滚动更新的不兼容检查默认开启渲染资源命名空间检查工作负载必须在app-namespace其余资源在app-namespace或user-system-*默认开启容器级资源限制检查spec.required*/spec.limited*或新版spec.resources[]Chart.yaml与 manifest 同版本检查默认开启ServiceAccount RBAC 规则检查禁止授予被禁权限默认开启非 beclab 镜像的 privileged securityContext 检查默认开启。其中第 5 项的「缩容到零」能力验证很有代表性checkWorkloadScaleToZero会用replicaCount0和replicaCount1分别渲染 chart要求spec.replicas随之变化从而复现 app-service 停止/启动应用的实际操作见 chart.go。此外WithAutoOwnerScenarios即LintBothOwnerScenarios快捷方式会让校验分别在「owner admin集群管理员安装」和「owner ! admin普通用户安装」两种场景下各执行一遍确保 chart 在两种安装模式下都能正确渲染。这些正是文档所述「Terminus-Gitbot 验证文件范围、所有权和版本规则」的工程实现其「自动合并、无需人工审核」的可靠性建立在上述 11 类规则之上。第三步自动校验与索引当 PR 提交后Terminus-Gitbot 会自动执行校验确保提交内容符合分发规则。如果所有检查通过PR 将自动合并稍后应用就会出现在 Olares 应用市场。值得注意的细节是oachecker 在Lint中同时兼顾「安装准入」与「PR 门禁」两种用途——例如「盲递归 chown 检查」WithBlindChownCheck默认关闭仅在 PR 门禁上启用避免在安装时误伤既有图表见 options.go 中的设计注释。这解释了为什么 PR 校验会比本地安装校验更严格新提交应用必须一次通过全部规则而存量应用安装不受新增规则影响。第四步管理应用生命周期应用发布后开发者仍可通过提交 PR 的方式管理生命周期。生命周期操作包括发布新版本、暂停应用分发、从应用市场永久移除应用。这些操作通过PR 类型以及 OAC 中的控制文件来实现。所有操作均通过提交指向beclab/apps:main的 PR 完成。应用发布后Terminus-Gitbot 支持三种生命周期操作UPDATE保持应用处于最新状态。发布新版本、修复问题或调整配置SUSPEND暂停应用分发。在不影响现有用户的情况下停止应用在 Olares Market 中的新发现、下载和安装REMOVE下架应用。永久停止应用分发并防止该图表文件夹名被再次使用。降低冲突风险在创建 PR 前建议先同步你的 Fork并将分支 Rebase 到最新的main分支以减少潜在冲突。控制文件规则控制文件是 OAC 根目录下的特殊空文件用于管理应用在 Olares 应用市场中的分发状态| 文件名 | 用途 | 版本规则 | 内容 | |--|--|--|--| |.suspend| 暂停分发 | 升级 | 空文件 | |.remove| 移除应用 | 相同 | 空文件 |UPDATE或NEW类型的 PR不能包含这些控制文件控制文件仅用于SUSPEND和REMOVE。更新应用UPDATE要更新已发布应用例如发布新版本、修改配置、更新所有者请提交类型为UPDATE的 PR。PR 必须满足以下要求版本升级新的 Chart 版本必须大于仓库当前版本。对图表的任何修改都必须升级 Chart 版本清理目录OAC 根目录不能包含.suspend或.remove文件无冲突PR 分支不得与beclab/apps:main冲突。警告Olares 应用市场不支持版本回滚。如出现问题必须提交更高版本进行修复。暂停应用SUSPEND若要暂时停止应用在应用商店中的展示、下载与安装请提交类型为SUSPEND的 PR。PR 必须满足版本升级Chart 版本必须大于仓库当前版本控制文件OAC 根目录包含.suspend文件且不包含.remove文件无冲突PR 分支不得与beclab/apps:main冲突。PR 合并后应用将不再在 Olares 应用市场中展示已安装该应用的用户仍可继续使用。移除应用REMOVE若要从 Olares 应用市场永久移除应用请提交类型为REMOVE的 PR。要求如下版本一致PR 标题中的 Chart 版本必须与仓库当前版本相同控制文件更改后OAC 根目录仅包含唯一的空文件.remove无冲突PR 分支不得与beclab/apps:main冲突。警告移除操作不可逆。PR 合并后应用所有者无法再次使用该图表文件夹名称但已经安装该应用的用户可以继续使用。三种操作的完整规则与示例见 管理应用生命周期。源码视角版本一致性校验「版本必须匹配」这一规则的底层实现位于 chartfolder/folder.go 的CheckWithTitle它把 PR 标题解析出的TitleInfoPR 类型、文件夹名、版本与Chart.yaml、OlaresManifest.yaml三方交叉比对任何不一致即报错。同时校验metadata.categories必须落在受支持的分类集合内如 AI、Utilities、Productivity、Developer 等完整清单见 folder.go 的validCategories。因此修改版本时务必同步更新Chart.yaml、OlaresManifest.yaml与 PR 标题三处。第五步优化应用市场展示应用发布后可以通过添加图标、宣传图和头图来优化应用在 Olares 应用市场中的展示效果。这些素材在OlaresManifest.yaml中配置见 推广你的应用规格如下应用图标必需。显示在启动台和市场列表中。位置OlaresManifest.yaml的metadata或entrances下的icon字段格式PNG 或 WEBP尺寸256 × 256 像素大小不超过 512 KB。源码佐证validate.go 将metadata.icon设为必填项并强制其为合法 http(s) URL——图标缺失或为本地相对路径的图表无法通过校验。宣传图推荐。显示在应用详情页建议至少上传 2 张。位置OlaresManifest.yaml的spec下的promoteImage字段URL 列表格式JPEG、PNG 或 WEBP尺寸1440 × 900 像素大小每张不超过 8 MB数量最多 8 张。仓库的 OlaresManifest 测试样例 展示了真实用法spec: promoteImage: - https://example.com/promo1.png头图可选。用于 Olares 应用市场的推荐位或显示在「我的 Olares」部分。位置OlaresManifest.yaml的spec下的featuredImage字段格式JPEG、PNG 或 WEBP尺寸1440 × 900 像素大小不超过 8 MB数量最多 1 张。图片托管服务可以将图片托管在自己的服务器上或使用 Olares 的图片托管服务打开 Olares Market 图片托管服务选择图片类型应用图标、头图或宣传图上传并预览图片复制生成的 URL粘贴到OlaresManifest.yaml对应字段中。注意由于素材字段icon、promoteImage、featuredImage全部要求 http(s) URL无论自建托管还是使用官方托管服务最终都必须得到可公开访问的图片地址。小结分发全生命周期一览| 阶段 | 关键动作 | 触发方式 | 结果 | |--|--|--|--| | 准备应用包 | 开发、测试、完善 OAC 元数据 | 本地开发 | 得到合规的 OAC 目录 | | 提交应用 | Fork 仓库、创建 Draft PR、标注 NEW | 提交 PR 至beclab/apps:main| Terminus-Gitbot 自动校验 | | 自动校验与索引 | 等待校验与自动合并 | 无人工干预 | 应用出现在 Olares 应用市场 | | 管理生命周期 | 提交 UPDATE / SUSPEND / REMOVE 类型 PR配合控制文件 | 提交 PR | 更新、暂停或下架应用 | | 优化展示 | 配置 icon / promoteImage / featuredImage | 修改 OlaresManifest.yaml 后走 UPDATE | 市场展示效果优化 |围绕这一流程仓库提供了完整的工程实现可供深入研读分发校验的核心逻辑集中在 framework/oac入口为 oac.go 与 chart.go目录与元数据一致性规则见 folder.gomanifest 字段校验见 validate.go模板扫描规则见 chartscan.go并配有大量*_test.go测试用例与 testdata 样例可作为开发与调试 OAC 时的权威参照。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐TerminusOlares应用分发实战OAC 打包、Terminus-Gitbot 自动校验与 Market 生命周期管理TerminusOlares应用分发实战OAC 打包、Terminus Gitbot 自动校验与 Market 生命周期管理 本篇基于 Terminus云原生后端运维Olares 应用提交与分发全指南从 OAC 打包到 Market 上架的自动化流程Olares 应用提交与分发全指南从 OAC 打包到 Market 上架的自动化流程 本指南基于 TerminusOlares开源仓库的开发者文档 Sub云原生后端运维Terminus Olares Market 应用摘除生命周期olares-cli market uninstall / stop / resume / cancel 实战与源码解析Terminus Olares Market 应用摘除生命周期olares cli market uninstall / stop / resume / ca云原生后端运维上一篇GetQzonehistory一次导出QQ空间全部历史说说下一篇Alpha 性能优化使用调试框架提升 iOS 应用性能的 7 个策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。