首页 / 资讯中心 / 文章详情

Terminus 中 Olares 应用生命周期管理:通过 PR 与控制文件完成应用更新、暂停与下架

Terminus 中 Olares 应用生命周期管理:通过 PR 与控制文件完成应用更新、暂停与下架 ★ FEATURED ARTICLE
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载应用发布到 Olares Market 之后开发者仍需对其持续管理。本文基于 管理应用生命周期指南 展开讲清楚 Terminus 生态中应用生命周期管理的核心机制所有后续操作更新、暂停、下架都通过向main分支提交 PR 完成由 Terminus-Gitbot 自动校验并合并同时借助 OAC 根目录下的控制文件.suspend/.remove声明应用的分发状态。读完后你将掌握三种生命周期操作各自的 PR 规则、版本约束以及这些规则在 oac 校验库 中对应的源码实现能够独立、准确地维护一个已发布应用。三种生命周期操作总览应用一旦通过 应用提交流程PR 标题格式为[PR type][Chart folder name][Version] Title content成功合并且出现在 Olares MarketTerminus-Gitbot 就支持以下三种生命周期动作| 操作 | 目的 | 对存量用户的影响 | |--|--|--| |UPDATE| 保持应用最新发布新版本、修复问题、调整配置 | 用户随新版本升级 | |SUSPEND| 暂停分发停止在 Olares Market 中的新发现、下载和安装 | 已安装用户可继续使用 | |REMOVE| 下架应用永久停止分发并防止该 chart 文件夹名被再次使用 | 已安装用户可继续使用 |所有动作的共同前提只能改标题声明的那个 chart 文件夹——PR 的文件作用域被严格限定在标题中的 Chart folder name 下PR 分支不能与beclab/apps:main冲突。建议在开 PR 前先同步 fork、把分支 rebase 到最新main以降低冲突概率类型标签NEW/UPDATE/REMOVE/SUSPEND一旦被 Gitbot 识别后不可再变更类型填错只能关单重开。控制文件.suspend与.remove控制文件Control files是放在OAC 根目录即 chart 文件夹下的特殊空文件用来声明应用的分发状态| 文件名 | 用途 | 版本规则 | 内容要求 | |--|--|--|--| |.suspend| 暂停分发 | 升级必须大于仓库当前版本 | 空文件 | |.remove| 移除应用 | 相同必须等于仓库当前版本 | 空文件 |两条硬性约束UPDATE或NEW类型的 PR不得包含这两个文件它们只属于SUSPEND与REMOVE控制文件必须是空文件状态完全由文件是否存在表达。从仓库源码可以印证这套机制确实是全局性的oac 的批量扫描工具在遍历 app 仓库时会把携带任一标记文件的目录静默跳过不再参与 Lint 报告fleet 扫描中的标记文件处理// hasSkipMarker reports whether a fleet entry should be excluded from the // report. We honour two sibling marker files: .remove for charts that // have been retired, and .suspend for charts that are temporarily // disabled ... Either marker causes the entry to be silently dropped // from the scan. func hasSkipMarker(dir string) bool { for _, marker : range []string{.remove, .suspend} { if _, err : os.Stat(filepath.Join(dir, marker)); err nil { return true } } return false }这说明控制文件不只是面向 Market 索引的声明也是 oac 生态内多种工具共同认知的应用已退役/已停用信号。更新应用UPDATE发布新版本、修改配置或更新 owners 时提交类型为UPDATE的 PR。PR 必须同时满足版本升级Version bump新的 Chart 版本必须大于仓库中的当前版本且对 chart 的任何修改都必须提升 Chart 版本——哪怕只改一行注释版本也要 bump目录干净Clean directoryOAC 根目录不得存在.suspend或.remove文件无冲突No conflictPR 分支不与beclab/apps:main冲突。注意Olares Market 不支持版本回滚。如果某个新版本出现问题唯一出路是再提交一个更高版本号的新 PR 来修复不能退回到旧版本。版本为什么这么严格因为 PR 标题里的 Version 会被 Gitbot 与 chart 内容做交叉校验。从源码看CheckWithTitle 会把TitleInfo.Version即 PR 标题解析出的版本、Chart.yaml的version与OlaresManifest.yaml中metadata.version三方比对// CheckWithTitle cross-validates folder chart manifest against a PR title. func CheckWithTitle(folder string, chartFile *Chart, m olm.Manifest, title TitleInfo, categories []string) error { // ... if m.AppVersion() ! chartFile.Version || title.Version ! chartFile.Version { return fmt.Errorf(VersionMustSame2, m.AppVersion(), chartFile.Version, title.Version) } // ... }其中TitleInfo结构体folder.go 定义携带PrTypePR 类型、Folder标题中的 chart 文件夹名和Version三个字段正是 Gitbot 从 PR 标题解析出来的信息。也就是说标题声明的版本是整条校验链的锚点标题版本、Chart.yaml、manifest 三者不一致即报inconsistent info. Version must be the same in chart...错误对应常量 VersionMustSame2。测试用例 TestCheckConsistency_VersionMismatch 验证了 manifest 版本与 Chart 版本不一致时校验失败的行为。暂停应用SUSPEND要临时停止应用在 Market 中上架、被下载或安装提交类型为SUSPEND的 PR版本升级Chart 版本必须大于仓库当前版本与 UPDATE 相同规则控制文件OAC 根目录包含.suspend且不包含.remove无冲突PR 分支不与beclab/apps:main冲突。PR 合并后的效果应用不再出现在 Olares Market 的列表/发现中新用户无法下载或安装已安装该应用的用户不受影响可继续使用甚至按原有方式升级已装实例直到你正式 REMOVE。注意SUSPEND时同样要走版本 bump——从版本规则表可以推断Gitbot 用版本是否前进来识别一次 SUSPEND 是一次新的状态变更事件与 UPDATE 的语义保持统一。移除应用REMOVE永久下架应用时提交类型为REMOVE的 PR规则与前两者明显不同版本相同Same versionPR 标题中的 Chart 版本必须等于而非大于仓库中的当前版本控制文件变更后.remove必须是 OAC 根目录下唯一的文件——也就是说REMOVE 后该目录下应只剩下.remove原有的Chart.yaml、values.yaml、templates/、OlaresManifest.yaml、owners等全部删除.suspend也不得存在无冲突PR 分支不与beclab/apps:main冲突。REMOVE 不可逆。合并后该 chart 文件夹名不能再被应用 owners 复用——即使后来修复了问题也无法用同名文件夹重新发布已安装用户仍可继续使用。版本相同这条规则的含义可以从源码中得到解释REMOVE 本质上是一次标记操作而非内容发布Gitbot 需要通过title.Version 仓库当前版本确认你移除的是同一个已发布版本避免误伤他人或自己后续的更新。底层校验Gitbot 如何核对一个 PR结合 oac 校验库 的目录布局检查实现CheckLayout可以把 PR 校验链理解成三层目录布局层chart 文件夹必须存在且包含Chart.yaml、values.yaml、templates/、OlaresManifest.yaml四要素文件夹名必须匹配^[a-z0-9]{1,30}$仅小写字母和数字、无连字符、不超过 30 字符。REMOVE 之后目录只剩.remove自然不再满足该布局——这正是目录内容只剩控制文件规则能被检测到的基础一致性层CheckConsistency/CheckWithTitle要求Chart.yaml.name 文件夹名 OlaresManifest.metadata.name且版本号三处一致见上文 UPDATE 小节PR 元数据层文件夹名不能命中保留字列表user/system/space/default/os/kubesphere/kube/kubekey/kubernetes/gpu/tapr/bfl/bytetrade/project/pod见 isReservedWordmetadata.categories必须落在固定枚举AI/Blockchain/Utilities/Social Network/Data/Entertainment/Productivity/Lifestyle/Developer/Multimedia内。相关的测试覆盖可参考 folder_test.goTestIsValidFolderName验证文件夹名规则ABC、ab-c、超过 30 字符均非法TestCheckWithTitle_RejectsReserved验证保留字拒绝逻辑TestCheckConsistency_VersionMismatch验证版本不一致报错。实操检查清单提交生命周期 PR 前按顺序自检确认操作类型新版本/改配置 →UPDATE版本暂停 →SUSPEND版本含.suspend不含.remove下架 →REMOVE版本目录仅剩.remove若涉及 chart 内容修改Chart.yaml的version与OlaresManifest.yaml的metadata.version已同步 bump且与 PR 标题中的[Version]完全一致OAC 根目录中不存在不该出现的控制文件UPDATE 下两个都不能有分支已 rebase 到最新beclab/apps:main无冲突无同文件夹的 Open/Draft PR 在途接受约束无版本回滚、REMOVE 不可逆且文件夹名永久作废。配套阅读提交应用NEW PR 的完整规则与状态标签、分发总览OAC、应用索引、Terminus-Gitbot 与 owners 文件的整体概念。赞分享云原生后端运维【免费下载链接】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云原生后端运维Terminus Olares Market 应用摘除生命周期olares-cli market uninstall / stop / resume / cancel 实战与源码解析Terminus Olares Market 应用摘除生命周期olares cli market uninstall / stop / resume / ca云原生后端运维iOS应用生命周期管理GeneralsX如何实现游戏暂停、恢复与内存安全iOS应用生命周期管理GeneralsX如何实现游戏暂停、恢复与内存安全 GeneralsX 是让《命令与征服将军 零时时刻》Command Conq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站