Tranfu Coolify 部署
在公司 Coolify 上部署、更新或排查 tranfu-labs 应用,直到公网地址可以正常访问。
基础信息
- 名字/名称
- Tranfu Coolify 部署
- 描述说明
- 把 tranfu-labs 下的 -app 仓库部署到公司 Coolify 实例。资源走 Application (private-github-app) + build_pack=dockercompose + is_auto_deploy_enabled=false; GitHub App integration 由 ops 一次性手工装, skill 不接管。部署链路: GHA build → push GHCR → POST /api/v1/deploy?uuid=$APP_UUID → Coolify pull GHCR; compose 主 service 只写 image: ${IMAGE_REF:-ghcr.io/...:latest} + pull_policy: always, 禁 build:;GHA 写 IMAGE_REF=sha-tag 再 deploy。Step 1 入口分流: 同名 Application 不存在 → 初始化 (mktemp clone + 四件套合规 subagent 修 + 建 project/Application + GH secrets/environment/vars + autonomous push); 存在 → 更新分支 (A redeploy / B 改域名 / C 改 env / D 改源码或 compose / E 改 GH 配置)。 agent 全程 autonomous 不依赖 user cwd, 收尾验 CI + 30s deploy-start + 5min 公网轮询。 同名硬约束 REPO_NAME == PROJECT_NAME == APP_NAME; 旧 Service 残留 (0.7 历史) skill 不接管。 触发短语: 帮忙部署 / 确认并部署 https://github.com/tranfu-labs/<x>-app、coolify 一下、 改域名/env/compose、redeploy / 重新部署 / 重启、部署挂了、coolify 访问不了。 不要用于: 非 tranfu-labs 仓库; 非公司 Coolify; UI 操作 (挂 GHCR credential / 装 GitHub App); 与部署无关的改动。
Tranfu Coolify 部署
把 tranfu-labs/<x>-app 端到端部署 / 改配置 / 排障到公司 Coolify——一份流程自动识别做什么, 全程自主到公网可访问才收尾, 不依赖你的当前目录。
什么时候用它
首次部署项目:
我拿到一个 tranfu-labs/<x>-app 仓库, 想让它一口气跑完 clone、补齐 Docker 四件套 (Dockerfile / .dockerignore / compose.yml / deploy.yml)、建 Coolify 项目和 Application、配 GitHub secrets 与 env、推 commit, 一路盯到公网 2xx 才收尾。
发布新版本:
我改了个 env 或者只想验证一次滚动更新, 直接说「重新部署 / redeploy / 重启」, 它只调一次 Coolify deploy API, 不主动核对源码, 不多改一个字。
改域名 / 改 env:
我要把域名切到 board.tranfu.com, 或者补一条 DATABASE_URL, 它直接调 Coolify HTTP API 改, env 改完自动重新部署, 全程只显示 key 与哈希, 不 echo 敏感值。
部署代码更新:
我要动 compose.yml 或 Dockerfile——它自己 mktemp -d 临时目录 clone、派子 agent 按 references/file-generation-rules.md 改、自动 git add / commit / git push -u, 不用我先 cd 到仓库, 也不污染我的工作目录。
排查部署问题:
我说「部署挂了 / Coolify 访问不了」, 它不默认重新部署, 先反问要走 (a) 拉一份 GHA + Coolify status 诊断 (b) 直接重新部署试一次 (c) 改某个具体配置, 三选一。
不接:
非 tranfu-labs 仓库 / 非公司 Coolify 实例 → 硬编码假设外, 直接终止; Coolify UI 上的手动操作 (装 GitHub App integration、挂 GHCR credential) → 那是 ops 一次性配置, 本 skill 只走 API; 与部署无关的普通功能开发 → 走 openspec-driven-development。
它会产出什么 / 你会看到什么
给完初始指令后它一路跑到公网 2xx 才停, 中途 GET 只是为了事后告知改动, 不是等你确认——最反常识的一点, 不要期待每步都能拦住。
- API 调用: 走 Coolify HTTP API (
/api/v1/projects//api/v1/applications//api/v1/deploy) 建资源、改配置、触发部署; 已存在的 Application 走更新分支, 乐观假设已经部署好, 只做用户指派的一个最小动作 - git 动作: 临时目录 clone
tranfu-labs/<x>-app, 派子 agent 按references/file-generation-rules.md改文件, 自动git add / commit / git push -u, 推完告知 commit sha + 改动摘要 + GitHub 链接 - GitHub 端配置:
gh secret set写COOLIFY_API_TOKEN/COOLIFY_BASE_URL,gh api PUT自动建 environment (不让你去 settings 手工点),gh variable set写COOLIFY_APP_UUID - 收尾三关: 等 GHA 通过且无「缺变量」类静默失败、30 秒内看到 Coolify 进入
deploying、5 分钟内轮询公网域名返回 2xx / 3xx; 5 分钟硬上限, 到点就交出排障入口 - 敏感值纪律: 全程只引用
$COOLIFY_API_TOKEN变量名; 你的.env内容、Coolify 返回的 env value、你贴进对话的 secret 都不 echo, 也不硬编码进脚本 - 绝不会做: 挂 GHCR credential、装 Coolify GitHub App integration、DELETE Application、清 volume、碰旧
/servicesnamespace、在你当前目录直接 clone、意图模糊时默认重新部署、无限轮询
前置条件 / 边界
前置:
Coolify 实例已一次性挂好 GitHub App integration (organization = tranfu-labs), 由 ops 配好后所有 tranfu-labs 项目复用同一份; 本地有 gh / jq / curl; 环境变量 COOLIFY_API_TOKEN 与 COOLIFY_BASE_URL 已注入 (末尾斜杠会自动 strip)。
硬范围:
只接 tranfu-labs/<x>-app 仓库、单一公司 Coolify 实例、单 server 调度; REPO_NAME == PROJECT_NAME == APP_NAME 是命名硬约束, 不让你从列表挑名字, 也不建其他名字的项目。
相邻 skill 分工:
| 动作 | 交给 |
|---|---|
| 通用项目 Docker / CI 冷启动 (非 Coolify) | coolify-deploy |
| 打 tag / 写 changelog / 定版本号 | release |
| 有风险的 DELETE / 清 volume / 删重复项 | reversible-ops |
| 与部署无关的普通功能开发 | openspec-driven-development |
不接的场景:
- 非
tranfu-labs仓库、非公司 Coolify 实例、多 server 调度 - Coolify UI 上的手动点击 (装 GitHub App integration、挂 GHCR credential、UI 上删资源)
- 意图模糊时默认重新部署——必先反问三选一
- 已存在 Application 时主动核对源码或多改一个字——更新分支乐观假设已部署好
微妙边界:
- 已存在 0.8 形态 Application (Application +
private-github-app+dockercompose) → 走更新分支, 按用户意图挑最小动作 - 已存在的是 0.7 旧 Service 残留 → 终止并请你手动 DELETE 旧 service 后重跑, 本 skill 不旁路创建
- 只有 Coolify UI URL → 做只读归一化反推
git_repository, 再重新套tranfu-labs/<x>-app硬范围校验, 旧形态 Application 不接管 - 会话里出现「停止部署 / stop / cancel / 暂停」→ 立即硬取消, 不再 push、不再 PATCH、不再触发部署, 明确报告已发生与未发生的边界
版本信息
本地 Skill catalog 公开快照,仅展示公开安全字段。
Skill 文件
(55)SKILL.md
SKILL.md · Markdown