在傳統 CI/CD 流程,都是會在同一臺機器上進行,所以當有一個 Job 吃了很大的資源時,其他工作都必須等待該 Job 執行完畢,釋放出資源後,才可以繼續進行。現在 Drone 推出一個新功能,叫做 Multiple Macine 機制,現在開發者可以將同一個 Job 內,拆成很多步驟,將不同的步驟丟到不同機器上面去執行,降低部署執行時間,假設現在有兩臺機器 A 及 B,你可以將前端的測試丟到 A 機器,後端的測試,丟到 B 機器,來達到平行處理,並且享受兩臺機器的資源,在沒有這機制之前,只能在單一機器上面跑平行處理,沒有享受到多臺機器的好處。
Youtube 影片: https://www.youtube.com/watch?v=IRf9yyaHQ5I
實際範例
底下來看看如何將前端及後端的工作拆成兩臺機器去跑:
kind: pipeline
name: frontend
steps:
- name: build
image: node
commands:
- npm install
- npm test
---
kind: pipeline
name: backend
steps:
- name: build
image: golang
commands:
- go build
- go test
services:
- name: redis
image: redis
簡單設定兩個不同的 pipeline,就可以將兩條 pipeline 流程丟到不同機器上面執行。上述平行執行後,可以透過 depends_on
來等到上述兩個流程跑完,再執行。
---
kind: pipeline
name: after
steps:
- name: notify
image: plugins/slack
settings:
room: general
webhook: https://...
depends_on:
- frontend
- backend
部落格: https://blog.wu-boy.com/2019/08/drone-multiple-machine/