本篇文章更新時間:2026/02/07
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
GitHub Actions 的甜蜜陷阱與代價:讀 Ian K. Duncan 的深度反思
編輯前言:這篇文章來自 Ian K. Duncan 的〈GitHub Actions Is Slowly Killing Your Engineering Team〉。原文用極具臨場感的方式描述為何 GitHub Actions 在工程團隊的日常中,正悄悄地消耗你寶貴的時間、專注力與精神。對任何維護大型系統或深度依賴 CI 的團隊來說,這篇非常值得一讀。
核心觀點 (Key Takeaways)
- GitHub Actions 之所以受歡迎,只是因為它預設就附在 GitHub 裡,而不是因為它好用。
- YAML、Log Viewer、Marketplace、Runner 資源受限等問題,讓工程師的生產力不斷流失。
- Buildkite 展示了「真正可維護的 CI」應該長什麼樣子:清楚分界、可擴展、可掌控計算資源。
深入解析
Ian Duncan 的文章並不是單純吐槽,而是一個曾經深度實作與觀察所有主流 CI 系統的工程師,對 GitHub Actions 根本性設計缺陷的系統性總結。
1. Log Viewer 是工程師時間的黑洞
原文強調:在 GitHub Actions 裡找錯誤,是一場儀式,也是一場折磨。
“This is the log viewer for the most popular CI system in the world. It cannot survive contact with its own output.”
從跳轉頁面的繁瑣、到動輒讓瀏覽器死掉的巨大 Log、到無法回到 PR 的迷航式介面,每一個步驟都在消耗工程師。這也是很多團隊不知不覺變慢的根源:不是工程師不夠強,而是工具在拖你後腿。
2. YAML 與 Actions Marketplace:複雜度與風險並存
GitHub Actions 的 YAML 不再是「設定檔」,而是一種畸形語言。原文提到:
“Too complex to be configuration, too constrained to be a proper language.”
你必須靠試錯理解語法細節,長達 20 分鐘的迭代回圈讓任何小錯都被放大。而 Marketplace 則像一個品質參差的夜市:你永遠不知道安裝的 action 內藏什麼,甚至可能直接取得你 repo 的權限。便利與風險在這裡緊緊綁在一起。
3. 你不擁有你的 Compute
GitHub Actions runner 的效能問題,催生了一整個「替代 Runner」產業,這本身就說明了預設 Runner 的貧弱。即使自建 runner,也仍無法逃出 GitHub Actions 的 YAML、語法、Marketplace、權限模型等結構性問題。
4. Bash Script 並不是出口,而是另一個深坑
當工程師走投無路,會想「乾脆用 bash 全部自己寫」。但那只會演變成一個失控、難以維護的迷你 CI 系統。原文清楚指出:複雜度不會消失,只會轉移,最後變成團隊的技術債。
Buildkite:另一種可能性
Ian 不是單純批評,他也提出 Buildkite 作為更健康的替代方案。
1. Log Viewer 乾淨、穩定、可閱讀
Buildkite 的 Log 就是 Log——能用、能看,不會炸瀏覽器。原文提到這種差異看似細小,但日常使用時,卻是幸福感的巨大來源。
2. YAML 回歸本位:配置是配置,邏輯在程式碼裡
Buildkite 讓配置「保持簡單」,邏輯則放在可本地測試的程式碼中。這種清楚的邊界,是 GitHub Actions 無法提供的。
3. 完整掌控你的計算資源
Buildkite Agent 是一個你可完全掌控的單一 binary,能在任何硬體上執行。你可以用更快的機器、更大的 cache,讓 CI 速度真正跟著團隊需求成長。
4. Dynamic Pipelines 帶來真正的彈性
你可以用程式碼生成 pipeline,而不是被 YAML 限制。這對 monorepo 或大型後端系統尤其重要。
筆者心得與啟發
讀完這篇文章,我最大的感觸是:許多工程團隊其實被 GitHub Actions「默默慢性消耗」,但因為它是預設選擇,加上切換成本高,大家就這樣被困在看似便利、實則限制重重的工具中。
三個反思:
- 工具的預設選擇會形塑整個工程文化。 CI 若反應慢、調整難、問題定位困難,團隊的工程迭代自然就慢。
- 越大型的系統,越需要「可預測、可掌控」的 CI。 市場上的 default 往往不是最適合成長中的團隊。
- CI 不是瑣事,而是工程效率的基礎設施。 選錯 CI,會放大每一次小錯與試錯迭代,累積成團隊的痛苦來源。
總結一句:如果你的 CI 讓你心累,那並不是你的問題,而是工具的問題。Ian 提醒我們:CI 有其他活法,團隊值得更好的工具。
