logo
0
0
WeChat Login
refactor(puller): 将模型拉取脚本从bash重写为Python实现

CNB Ollama Puller

  • coordinator:负责解析多个模型、创建仓库、调用 StartBuild 为每个模型拉起一条 CNB 流水线
  • worker:负责在对应仓库里拉取单个模型、处理 Git 冲突、更新 README.md 并推送

支持的多模型格式

export MODEL="qwen3:1.7b,qwen3:7b"

MODEL 里有多个模型时,coordinator 会在同一个 REPO 上为每个模型各触发一条流水线。

环境变量

变量名必需说明
ADMIN_CNB_TOKEN / CNB_TOKENCNB API Token
MODEL模型列表,逗号分隔
REPO目标仓库路径
RUNNER_ROLEcoordinatorworker,默认 coordinator
TEMPLATE_REPO初始化模板仓库路径

StartBuild 行为

coordinator 会对每个模型调用一次:

  • POST ${CNB_API_ENDPOINT}/{repo}/-/build/start
  • Accept: application/vnd.cnb.api+json
  • Authorization: Bearer $CNB_TOKEN

如果仓库是本次新建的,还会先调用 PATCH /{repo} 更新仓库简介。

并通过环境变量把 worker 所需上下文传进流水线。 固定使用:

  • branch=main
  • event=api_trigger
  • sync=false
  • 当前仓库 .cnb.yml 的文件内容作为 StartBuild.config

实现上使用 requests 读取响应头里的 traceparent;请求失败时只写日志,不会在最终输出里展示 trace 内容。

Worker 行为

worker 执行流程:

  1. 克隆目标仓库
  2. 如果仓库为空,从模板仓库初始化
  3. 启动或复用本地 ollama serve
  4. 对当前流水线对应的单个模型执行 ollama pull
  5. 更新仓库 README.md
  6. 提交并推送
  7. 如果多条流水线同时 push 发生冲突,基于远端最新提交重新 cherry-pick,并重新整理模板 README.md 的模型信息来解决冲突

About

No description, topics, or website provided.
Pullerrepo-named
Language
Python98.1%
Dockerfile1.9%