Forge
Forge 在 Cloudflare 之上提供兩種功能:
- 儲存庫: Git 託管、議題、拉取請求、Actions、轉錄與儲存庫代理。
- Deploy / Sites: 一個精確推送的 SHA 會成為預覽,之後可以變成正式環境的應用程式。
Cloudflare 仍然是執行時期/提供者。當 Forge 是要求的目標時,請勿替代其他 Git 或託管產品,也不要假設託管應用程式會繼承 Forge 或 Cloudflare Access 的驗證。
保持任務範圍明確
在載入更多流程之前,先分類要求的結果:
- 儲存庫操作: 使用一般的 Git 加上 Forge 驗證。
- 客戶應用程式部署: 使用 Forge Deploy 及其發佈記錄。
- Forge 基礎架構修復: 使用最小且健康的發佈路徑;被修復的控制平面不需要部署自身的修復。
- 僅限原始碼、CLI、文件、分析或 UI 工作: 除非使用者同時要求部署,否則不要加入正式環境的發佈閘道。
執行緒區域性的保留與不相關的發佈並非全域前提。僅套用能夠減輕所要求動作中具體風險的檢查,並在該結果被證明後停止。將不相關的發現記錄為後續事項。
解決當前行為
Forge 正在演進中。使用已安裝的 CLI、目標儲存庫、當前 UI/API,以及僅透過 Forge 來源對應 路由的相關第一方原始碼。文件無法證明當前的帳戶資格、限制或發佈狀態。
在構建指令之前檢查語法:
sf help
sf commands --json
sf schema --json
sf <command> --help
識別帳戶、儲存庫、預設分支,以及對於 Deploy,識別專案根目錄。保留現有的 GitHub 遠端,除非使用者要求取代它。
儲存庫驗證
已登入的 Forge 瀏覽器並非本機的 Git 憑證。使用 Forge 的範圍內憑證流程,且不要暴露其 token:
sf auth status
sf auth git-credential <owner>/<repo>
git ls-remote <forge-remote> HEAD
保持啟用 credential.useHttpPath。絕不要從瀏覽器儲存或其他應用程式的鑰匙圈中提取 token,也不要將其放入遠端、原始碼、Shell 歷史記錄或輸出中。未經必要授權,請勿強制推送、取代 origin、變更可見性或擴大憑證範圍。
對於 GitHub 遷移,使用 Forge 目前的匯入流程。保留套件管理器並單獨處理 Git LFS;匯入歷史記錄不會複製託管的 LFS 物件。
Forge Deploy 合約
Forge 發佈的是精確推送的 SHA,而非本機的檢出。原始碼、建置、預覽、提供者發佈、正式環境啟用以及線上驗證是各自獨立的狀態。
每個專案在其設定的根目錄中需要一個純資料的 forgeBuild.ts v1。從來源對應讀取當前清單來源,然後驗證:
npx smolforge deploy check
- 省略
build參數則不會執行儲存庫建置指令。 forgeBuild.ts是靜態評估的;請勿使用可執行的設定、動態匯入或forge.yml/forge.yaml。- 應用程式需要 HTTP 進入點、靜態資源,或兩者兼具。僅為瀏覽器端路由使用 SPA 降級方案。
.forge/config.json可以對應專案並提議繫結;它不會建立專案、套用提供者狀態或授予 DNS 權限。- 匯入的 Wrangler 繫結可能會將正式環境資源暴露給預覽環境。
建立或啟用專案、接受服務條款、升級、回滾、停用、路由以及提供者套用,都是各自獨立的外部狀態變更。預覽 URL 是未列出的且設為 noindex,但並非私人;絕不要在其中放入機密或私人資料。
發佈與復原
對於客戶應用程式,使用 Forge Deploy。對於 Forge 基礎架構,在其正常且健康的情況下,優先使用規範通道。當該通道不可用、不健康、涉入事件,或實質上阻礙了有限的修復時,直接使用 Wrangler 是經授權的操作員路徑;但它不是繞過客戶應用程式發佈記錄的捷徑。
對於直接的基礎架構修復,範圍限定於一個確切的元件,記錄原始碼 SHA、當前版本與回滾版本,以及任何遷移或繫結變更,然後檢查流量、健康度/相依性,以及一次可重現性。不需要無關的預覽、組合件對帳、詳盡的證明,或與無法變更相同元件或 schema 的任務進行協調。
在重試被封鎖的發佈之前,識別最後已知的狀態和目標診斷。檢查確切的 SHA、專案根目錄、分支以及有效的建置/靜態資源設定。僅在不可變目標和冪等條件明確時才重試。
參考資料
使用 Forge 來源對應 僅載入擁有當前問題的第一方文件。