SuperAPI AI 工具集

keboola-git

部署与运维

查看项目

更新于 10-15 23:44

技能介绍

用途:为 python-js 数据应用读写 Keboola 托管的 Git(Forgejo)仓库,在 GitHub 与 Keboola git 之间迁移源码,从托管仓库推送源码并部署。不适用于编写 keboola-config/(nginx、supervisord、setup.sh)或 Streamlit 应用开发,后者属 dataapp-developer:dataapp-development 技能;本技能假定源码已存在,只处理 git 管道。

前置条件:kbagent 已安装并在 PATH(kbagent --version);项目需注册:kbagent --json project add --project <alias> --stack <stack-url> --storage-token "$KBC_TOKEN";每会话导出 KBAGENT_CONVERSATION_ID=$(uuidgen);工具调用始终加 --json 以便解析 configuration_id、repo_url、git_clone_url。

主要能力与用法:用 get_data_apps 查现有应用的 configuration_id、data_app_id、repo_url(https://git.<stack>/keboola/app-<data_app_id>.git);无 python-js 应用时用 modify_python_js_data_app 创建 prod 应用与仓库(空 configuration_id 每次都会新建,且仓库无法再附加到已有应用,应先查后建)。用 create_python_js_data_app_git_credential 生成一次性推送凭据 git_clone_url(https://kai:<secret>@git.<stack>/...),仅对 prod 配置生成,secret 只显示一次,务必只存 shell 变量、不提交不进日志。

推送流程:在工作目录 ./.keboola-git-work/<app>/ 下克隆,加入 .gitignore;git clone --single-branch --branch <branch> <source-repo> app;git remote add keboola "$URL";git push keboola HEAD:main。先推 main,因空仓库首个推送分支成为默认分支;默认分支不可删,其他分支可删;禁止强推共享/托管分支。

关键限制:Forgejo 拒绝约 15MB 以上推送并返回 HTTP 413,单文件超限无法拆分,必须不跟踪。推送前用 find . -size +15M -not -path '/.git/' 检查;构建产物应改由部署时在 keboola-config/setup.sh 中构建(如 cd frontend && npm ci && npm run build,Next.js standalone 需复制 .next/static 与 public)。还需检查 git 历史中可达的 blob:git rev-list --objects HEAD | git cat-file --batch-check='%(objecttype) %(objectsize) %(rest)' | awk '$1=="blob" && $2>15000000 {print $2, $3}';如有超限,可推单个干净提交(git checkout --orphan clean-main)或用 git filter-repo 清除。

部署与验证:kbagent --json tool call deploy_data_app --input '{"action":"deploy","configuration_id":"<cfg>"}';以日志为准:kbagent --allow-env-manage-token data-app logs --project <alias> --app-id <data_app_id> --lines 300,观察到 Compiled successfully、Completed: setup_sh、node-frontend entered RUNNING state、Ready in、python-api entered RUNNING state。不要用 HTTP 探测确认前端(未认证请求会命中平台登录门)。成功标志:仓库就绪、应用部署、容器构建、node-frontend 运行、后端进程启动;后端数据错误属数据状况而非 git/部署失败。

其他:改动分支预览的草稿流程见插件参考文件;完整命令目录与 gotchas 见 references/managed-git.md。