
自架持續整合工具 Woodpecker CI 於 2026 年 10 月 28 日發布 3.20.0,緊接著次日再推出 3.20.1。3.20.0 更新環境變數替換模組時引入非預期的破壞性變更,官方在發布說明中直接標明請改用 3.20.1;3.20.1 修復 drone 風格的 envsubst 行為、步驟日誌群組介面,以及 Go 套件依賴 [1][2]。
安全修補集中於漏洞與權限
3.20.0 的安全改動數量明顯多於功能更新。最值得注意的,是把 agent token 從程序的作業系統環境變數中移除,並確保 CLI 自我更新只可針對 CLI 的安全目標,避免被引導至其他路徑。已撤銷權限的環境管理員,現在會堅持撤銷狀態直達伺服器重啟,不再因連線狀態變化而復權;修復儲存庫時會旋轉儲存庫的 JWT。
其他加固包含:收斂組織層級密鑰與映像值庫的簽發表的儲存範圍;修正並加固設定檔抓取流程;在登入頁只為 http 或 https 的錯誤 URI 建立連線;不再於 trace 日誌層別記錄 bearer 漏洞;以及在代理伺服器端由設定解析引發的 panic 中恢復。官方特別感謝研究人員 baradika 回報保安漏洞。
手動流程與代理資源分配
功能方面,手動觸發的 pipeline 現在可以選擇要執行哪一個 workflow,對於一個倉庫內有多條流程的圖鑒更為實用。管理員可限制組織或個人用戶只使用自己所屬的 agent,配合既有的 agent 標籤機制,可減少跨圖鑒搶佔執行資源。
3.20.0 同步新增 CI_REPO_ID 環境變數,讓步驟可直接取得倉庫編碼;佇列的暫停狀態會在伺服器重啟後保留,不再自動恢復執行;佇列排程運算亦已加速。部署時 pipeline 的作者會改以工作階段用戶取代,重啟 pipeline 時才會審核核心貢獻者資訊。介面方面,深色主題經過重做,CLI 的 lint 指令會優先採用偵測到的 Woodpecker 設定檔。
修正與升級注意
多項修正針對佇列與後端的邊界情況:佇列重負載後,depends_on 的 workflow 在依賴失敗後仍繼續執行,現已修正;Kubernetes 後端不再把已刪除的未知 pod 回報為成功;agent 會正確遵循 keepalive 時間與逾時標記。GitLab、Gitea 與 Forgejo 的 annotated tag 現可正確解析 commit SHA,GitLab 標籤 pipeline 的作者改由 webhook metadata 取得。
此外,沒有填寫 enabled 欄位的 cron 現在會正常啟用,SQLite 資料庫鎖定時建立 pipeline 會重試,OOM 錯誤也會正確向上拋棄。
升級時請直接採用 3.20.1,跳過 3.20.0。若現有流程依賴舊有環境變數替換行為,或自簽步驟機頻讀取 agent token 環境變數,升級前請先在測試環境驗證,因為這兩項行為在 3.20 系列均有變動 [1][2]。