面向 Olares 相关自动化与 Agent 工作流的脚本集合;按子目录划分工具。下文每个工具一节:用途、用法、注意事项。
- Python 3.9+(建议 3.10+)
- 进入对应子目录后安装依赖:
pip install -r <子目录>/requirements.txt
在 prod 与 test 两套本地应用根目录之间,按应用名对齐,比较 Chart.yaml 的 version 以及 .suspend / .remove 等状态,用于快速发现两套源是否一致。默认在对比之前会对两侧 Git 仓库执行 fetch,并在 fork 场景下合并 upstream 与 origin(与 sync_repos.py 逻辑一致)。
-
复制配置并填写路径与仓库 URL;若使用黑名单,从模板生成本地文件(已 gitignore):
cp compare_chart/config.yaml.template compare_chart/config.yaml cp compare_chart/blacklist.txt.template compare_chart/blacklist.txt
-
建议在
compare_chart目录下执行脚本,使默认读取当前目录的config.yaml;否则用-c指定配置文件路径。cd compare_chart pip install -r requirements.txt python3 validate_config.py # 可选:检查路径与黑名单文件 python3 compare_chart_versions.py # 默认先同步再比较 python3 compare_chart_versions.py --skip-sync # 只读本地,不做 git python3 sync_repos.py # 仅同步 prod/test,不比较
-
常用参数(完整列表见
python3 compare_chart_versions.py -h):--skip-sync、-A/--all、--git-branch、--allow-dirty(仅与同步配合)、--token-env、-b/--blacklist、-c/--config。
- 工作目录:未指定
-c时,读取的是进程当前目录下的config.yaml,不是脚本所在目录;在仓库根运行python compare_chart/compare_chart_versions.py时要么cd compare_chart,要么-c compare_chart/config.yaml。 - 凭证:私有仓库
fetch需要GITHUB_TOKEN/GH_TOKEN或GITHUB_TOKEN_FILE(文件内可为单行 token 或KEY=value);勿把 token 写入仓库。 - 忽略文件:
compare_chart/config.yaml、compare_chart/blacklist.txt、本地github.txt等含路径或密钥的文件请勿提交(见根目录.gitignore);仓库内仅保留blacklist.txt.template。
| 参数 | 含义 |
|---|---|
-c / --config |
配置文件路径;默认为当前工作目录下的 config.yaml(一般先在 compare_chart 下 cd 再运行,可不写 -c) |
--skip-sync |
跳过远端 Git 操作,直接按本地目录比较 |
-A / --all |
列出全部差异,并忽略黑名单;且不再按 prod 侧 suspend/remove 规则隐藏行 |
--show-suspend |
在默认模式下仍显示 prod 为 suspend 的差异行 |
--show-remove |
在默认模式下仍显示 prod 为 remove 的差异行 |
-b / --blacklist |
覆盖配置中的黑名单文件;"" 表示不加载黑名单(与 --all 时忽略黑名单不同,见下行) |
--git-branch |
同步时覆盖配置中的 git_branch |
--allow-dirty |
同步时若工作区有未提交修改仍继续(默认会中止;慎用) |
--token-env |
同步时仅从指定环境变量名读取 GitHub token(仍可使用 GITHUB_TOKEN_FILE) |
说明:--allow-dirty 仅在未使用 --skip-sync 时有效;若只做本地对比,请使用 --skip-sync,无需 --allow-dirty。
将 test 配置中 local_path 下的某个应用目录,整目录覆盖复制到 prod 的 local_path;在 prod 的本地克隆上新建分支、提交、推送到 prod 的 fork,并对 prod.upstream 创建草稿 PR(标题/正文格式对齐 GithubSync 中 sync_folders 一类约定)。默认执行前会调用与 compare_chart 相同的 sync_from_config,保证两侧 fork 已 fetch 并合并 upstream 最新提交。
-
复制配置(可与
compare_chart共用同一份config.yaml):cp sync_chart/config.yaml.template sync_chart/config.yaml
-
在
sync_chart目录下执行(或-c指向配置文件):cd sync_chart pip install -r requirements.txt python3 sync_chart.py <CHART> # 同步单个应用目录名 python3 sync_chart.py --batch charts.txt # 批量:txt 每行一个目录名,# 为注释 python3 sync_chart.py myapp --title "说明" # 标题在 [TYPE][name][ver] 后追加说明
-
其它参数:
--branch、--allow-dirty、--token-env、--skip-preflight(跳过预同步,仅调试用)。帮助:python3 sync_chart.py -h。
- 依赖同仓库中的
compare_chart:通过sys.path引用compare_chart的sync_repos与配置加载;请与本仓库一并检出,不要单独拆走sync_chart目录。 - prod 工作区:默认要求 prod 克隆无未提交更改;否则需先处理或使用
--allow-dirty。 - 提交身份:在 prod 仓库配置
user.name/user.email,或设置环境变量GIT_AUTHOR_NAME、GIT_AUTHOR_EMAIL。 - Token:推送与创建 PR 需要 token(环境变量或
GITHUB_TOKEN_FILE);勿将config.yaml、github.txt提交到远端。 - 批量列表:
--batch的参数是文件路径(txt),不是命令行罗列多个 chart。
若仓库根目录未单独声明许可证,以仓库所有者配置为准。