跳到主內容

【GitLab】gitlab-runner 執行環境種類

下面整理成表格給你(主流可用的 executor):

Executor 運作方式 優點 缺點 適用情境 設定/註冊要點
shell 直接在 Runner 主機的 shell 執行(bash / PowerShell) 最快、零容器開銷;可直接用主機已安裝工具 隔離最弱、容易「弄髒」主機;多專案易衝突 單機/內網、快速 smoke test、固定工具鏈 gitlab-runner register --executor shell;確保 gitlab-runner 使用者權限(如加入 docker 群組)與 builds_dir 可寫
docker 每個 job 以容器執行;image: 可指定環境 環境可重現、隔離佳、跨專案穩定 需管理映像;使用 Docker 需選擇掛 docker.sock 或 DinD 大多數 CI/CD 場景(前後端 build、容器化) --executor docker --docker-image <base>;若 job 需 docker build:① 掛 /var/run/docker.sock,或 ② DinD:privileged=true + services: docker:dind
kubernetes 每個 job 建一個 Pod 來跑 彈性擴縮、資源/隔離/配額完善 需 K8s 叢集與維運成本 中大型團隊、尖峰負載、雲原生 --executor kubernetes;於 config.toml 設 namespace、serviceAccount、pull secrets 等
ssh Runner 透過 SSH 登入遠端主機執行 可用現成遠端環境、無需在目標機器裝 Runner 隔離弱、擴展性差、權限管控要嚴格 特定機器/設備、臨時需求 --executor ssh;於 config.toml 填 host/user/key、路徑與環境
custom 以自訂腳本(prepare/run/cleanup)對接任意執行環境 彈性最高、可接非官方平台 需自寫與維護整套腳本,診斷較複雜 特殊平台、內部排程器 --executor custom;提供自訂 hook 腳本並測好錯誤處理