-
Notifications
You must be signed in to change notification settings - Fork 8
20180415_how to use filter in drone
title: "[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務" date: 2018-04-15 type: blog author: AppleBoy link: https://blog.wu-boy.com/2018/04/how-to-use-filter-in-drone/ layout: post comments: true
Drone 是一套用 Go 語言撰寫的 CI/CD 開源專案,是由一個 Server 跟多個 Agent 所組成,Agent 上面必須安裝好 Dokcer 才可以順利測試及部署,但是團隊內會出現一個狀況,每個專案的測試及部署方式不同,有的測試需要 Agent 很多 CPU 或記憶體資源,有的小專案則不需要那麼多,但是當大專案把 agent 系統資源吃光,其他專案都跑不動了,這邊的解決方式就是再建立一台新的 Agent 服務,將需要大量資源的專案跑在該台新的 Agent,Drone 這邊有支援 filter
功能,讓開發者可以指定專案要跑在哪一台 Agent 上。底下來教大家如何設定 drone filter。
打開 docker-compose.yml
,找到 Drone agent 的設定,加入底下變數:
DRONE_FILTER="ram <= 16 AND cpu <= 8"
這邊的意思是,專案需要的記憶體小於或等於 16
,CPU 小於或等於 8
。
這邊要介紹 Labels
,可以用來指定該專案要標記上哪些 Label,讓 drone server 可以根據這些 Label 來將 Job 丟到指定的 Agent 服務內。請打開 .drone.yml
,加入底下設定
labels: - ram=14 - cpu=8
可以看到上面設定 ram = 14 及 cpu = 8 可以看到符合上面 drone agent 的 filter 條件設定,所以 server 會將此 project 的工作都指定到特定的 agent 服務上,這樣就可以避免大專案跟小專案同時跑在同一台機器上。
如果上述步驟不知道該如何操作,可以參考底下教學影片
<iframe width="560" height="315" src="https://www.youtube.com/embed/OM_L_qE1Pus" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>為了能讓團隊繼續成長,就必須要一直擴展 Agent。原先在公司內部建立一台 server 加上多台 Agent,而各團隊維護各自的 Agent 服務,團隊間不共享 Angent 資源,這樣避免各專案互相卡住。透過 drone filter 可以讓團隊管理各自的專案在自己的 agent 服務上。如果您對 Drone 有興趣,也可以參考 Udemy 上面的『一天學會 DevOps 自動化測試及部署』線上課程。
-
Drone CI/CD 系統簡介 (0)
-
為什麼我用 Drone 取代 Jenkins 及 GitLab CI (10)
-
Drone CI Server 搭配 Atlassian Bitbucket Server (前身 Stash) (1)
-
2017 COSCUP 研討會: Gitea + Drone 介紹 (4)
-
用 Docker 發送 Line 訊息 (5)
-
Drone 搭配 Kubernetes 部署 Go 語言項目 (0)
-
Gorush 輕量級手機訊息發送服務 (1)
-
在本機端導入 Drone CLI 做專案測試 (0)
-
Cronjob 搭配 Drone 服務 (1)
-
Drone Secret 安全性管理 (1)