Drone 是一套用 Go 語言撰寫的 CI/CD 開源專案,是由一個 Server 跟多個 Agent 所組成,Agent 上面必須安裝好 Dokcer 才可以順利測試及部署,但是團隊內會出現一個狀況,每個專案的測試及部署方式不同,有的測試需要 Agent 很多 CPU 或記憶體資源,有的小專案則不需要那麼多,但是當大專案把 agent 系統資源吃光,其他專案都跑不動了,這邊的解決方式就是再建立一台新的 Agent 服務,將需要大量資源的專案跑在該台新的 Agent,Drone 這邊有支援
filter
功能,讓開發者可以指定專案要跑在哪一台 Agent 上。底下來教大家如何設定 drone filter。
新增 DRONE_FILTER 設定
打開docker-compose.yml
,找到 Drone agent 的設定,加入底下變數:
DRONE_FILTER="ram <= 16 AND cpu <= 8"這邊的意思是,專案需要的記憶體
小於或等於 16
,CPU 小於或等於 8
。
新增 Labels 在 .drone.yml
這邊要介紹Labels
,可以用來指定該專案要標記上哪些 Label,讓 drone server 可以根據這些 Label 來將 Job 丟到指定的 Agent 服務內。請打開 .drone.yml
,加入底下設定
labels: - ram=14 - cpu=8可以看到上面設定 ram = 14 及 cpu = 8 可以看到符合上面 drone agent 的 filter 條件設定,所以 server 會將此 project 的工作都指定到特定的 agent 服務上,這樣就可以避免大專案跟小專案同時跑在同一台機器上。