← Home

SelfCI

17 January, 2026 - Tags: TIL, Git

今天在滑 mastodon 的時候看到了一個叫做 SelfCI 的酷專案(lobsters 貼文),他在設計上採 local-first 的哲學,開發者完全可以在他們本機透過 selfci 這個 CLI 來處理 CI job,例如說透過 selfci mq start 來處理完整個 merge queue。這個設計我認為算是解決了撰寫 CI job 時的一個常見痛點,就是他超難 debug,通常都要 push 到遠端甚至 merge 進 default branch 後才能檢查出錯在哪邊,然後看著 job log 嘗試找出問題成因。像這類型需求,GitHub Actions 是可以透過 act 在本機模擬 CI 執行的過程,而 build.sr.ht 我印象中是有支援可以 ssh 進去跑 job 的 VM。另外,在 SelfCI 的那個貼文中也有看到 action-sshd-cloudflared 這個專案,可以達成跟 build.sr.ht 類似的效果。

這樣看來,SelfCI 的設計跟 act 比較接近,都是允許開發者可以在 local 直接執行整個 CI 流程,讓我們有機會可以更早的驗證 CI manifest 或執行的腳本邏輯是否有問題,雖然犧牲的是可能會發生 It works on my machine 的問題,但這點我想也可以在有需要的時候準備 dedicate server 來專門跑 SelfCI 避免,算是在兼顧了便利性跟可驗證性的設計,而且重要的是他與 act 不同是 first-party 的支援。

除了 SelfCI 本身以外,我發現他 host 的平台 Radicle 也是個很酷的專案,他是一種 P2P 的程式碼協作平台,用去中心化的方式讓大家可以 host codebase,這種方式我是第一次看到。另外,我還發現 Forgejo 本身其實也有 federation 支援(官方 roadmap),似乎是基於 ActivityPub 的,所以也可以做到跨 instance 的互動例如開 issue 跟發 PR 等等。但從這個角度來看,sourcehut 的操作基本上都可以透過 email 達成,其實也算是去中心化的設計了,假設未來我需要架設自己的 git hosting service 的話我猜還是會選擇 sourcehut 吧。