Cloudflare把CI改寫成TypeScript

2026/08/17(一) 21:00・精選・原始出處

Cloudflare 推出 @cloudflare/ci,讓開發者用 TypeScript 定義 CI/CD,不必再把流程塞進 YAML。每個階段都跑在 Cloudflare Workflows 的耐久步驟中,可保存執行狀態、失敗重試並從中斷處續跑;獨立步驟預設並行,指令則交由隔離的 Sandbox container 執行。搭配 R2 儲存檔案系統快照後,也能快取依賴安裝結果。目前它已能完成 lint、測試、型別檢查、建置與部署前的流程協調。

現實應用

這套工具最適合已經使用 Workers、Workflows、R2 或 Durable Objects 的團隊,尤其是想把條件判斷、並行工作與錯誤處理寫成一般程式碼的平台工程團隊。大型專案可讓 lint、test、typecheck、build 同時執行,再用 Promise.all() 等待全部完成後部署;長時間工作也不必因單一步驟失敗而整條重跑。官方另有 self-healing 範例,失敗時可呼叫自家 AI agent 提出修補、建立分支,但不會自動合併。

期望評估

低標來看,我認為現有 Cloudflare 用戶至少能少寫一層 CI 串接程式,並取得步驟級重試、續跑、並行與觀測能力,依賴快取也有機會縮短建置時間。

高標來看,我猜它可能發展成 Cloudflare 上的完整開發交付平台,把程式碼推送、預覽環境、部署與 AI 修復接成同一條耐久工作流。不過 Artifacts 仍是 private beta,monorepo、更多版本控制系統觸發與正式部署 primitive 也還在規劃中。

商業策略分析

受影響的會是 GitHub Actions、GitLab CI,以及同樣主打程式碼化管線的 Dagger。Cloudflare 的優勢不是跨平台,而是把 CI 深度綁進自己的 edge stack,用平台黏著度換取狀態續跑與較少整合成本。我認為既有 Cloudflare 客戶值得試驗;非 Cloudflare 團隊則不必急著搬,因為要同時採用 Workflows、Sandboxes、Containers、Durable Objects,啟用快取時還要 R2,遷移成本不低。

實作細節

SDK 以 TypeScript 原始碼發布,目標是 Workers runtime,需由 Wrangler 等理解 Workers 的 bundler 處理。Repository 目前從 Cloudflare Artifacts 讀取,並以 cf.artifacts.repo.pushed 事件觸發 Workflow。要注意可重試步驟中的外部副作用必須具備 idempotency,否則重試可能重複操作;CiRunnerResult.logs 也不會自動遮蔽 secrets。

延伸連結