完成 VibeHost server-side build 子系統的全套 PR review 修正、 E2E 遷移準備、Vercel 風格的 CLI UX,並以 5 個真實 Next.js 專案在 staging GKE + Cloudflare 上驗證。
| PR | 主題 | 狀態 |
|---|---|---|
| #51 (PR #A) | Builder image + GKE Job + log forward plumbing | 已合併 |
| #52 (PR #B) | API spawns Builder Job + admin trigger | 已合併 |
| #53 (PR #C) | app_env_vars + AES-GCM 加密 + env CLI | 已修審查意見,待合併 |
| #54 (PR #D) | GCS build cache (restore + save) | 已修審查意見,待合併 |
| #55 | internal build endpoints 應在 user-auth 之前掛載 |
已上 PR,待合併
|
| #56 | Builder 自動偵測 package manager + 處理缺少 lockfile | 已上 PR,待合併 |
vibehost-builds namespace + ServiceAccount
vibehost-build(Workload Identity 註解已設)
vibehost-tenant=true:NoSchedule taint)
BUILD_SERVICE_TOKEN 已寫入
api-secrets,每個 deployment 用
HMAC(token, deploymentId) 簽名
vibehost-staging-buildcache GCS bucket 已建
+ lifecycle 設 14 天 TTL
buildToken、builderImage 配置已加入
staging stack
kubectl logs 的 stdout/stderr。
然而 LogForwarder 仍把每行 log 透過 HTTP 上傳到
API 並寫入 build_logs 表 — 即 dashboard /
vibehost logs 看到的 channel 完全正常。Debug
時繞了不少彎路才確認此事。
asia-east1-a 對 e2-standard-4
spot 實際只給 1 個 instance(雖然 Pulumi 設 max=5)。建議
production 用 reserved instance 或允許 fallback 到 standard
pricing。
403。SA 註解已設但 IAM
binding 還沒生效,導致 cache 都走 cold path。Cache miss
是 non-fatal(builder fallback 到 network),下個迭代再解。
pnpm install --frozen-lockfile,
但很多 create-next-app 預設用 npm + 沒
commit lockfile。已在 PR #56 修正(auto-detect npm/yarn/pnpm
+ 沒 lockfile 時 fallback 到非 frozen install)。
package.json 的 packageManager
欄位(corepack 標準)或 lockfile 存在性偵測 manager
@opennextjs/cloudflare
未在 user 的 package.json 宣告時自動安裝
transient 副本
以下項目原計劃在這次 session 完成,但考慮到 user 不在線、且 這些變更涉及 production state mutation 或長時運算, 選擇明確記錄而不冒險推進:
Inspect: 行、status
verbs、cyan URL、error code 連結)。
觸碰 vibehost deploy 主路徑風險高,建議與 user
對齊改動範圍後再做。
iam.MemberBinding),跑
pulumi up
create-next-app 預設、blog-starter、
commerce、taxonomy、
app-router-playground)
RUNTIME_BUILD_PATH=server
flag(或同等開關),退役 client-build;更新 CLAUDE.md hard
rule #1