Skip to content

20190805_drone multiple machine

Shawn Wang edited this page Dec 3, 2019 · 1 revision

title: "[Drone] 將單一 Job 分配到多台機器,降低部署執行時間" date: 2019-08-05 type: blog author: AppleBoy link: https://blog.wu-boy.com/2019/08/drone-multiple-machine/ layout: post comments: true

drone multiple machine

在傳統 CI/CD 流程,都是會在同一台機器上進行,所以當有一個 Job 吃了很大的資源時,其他工作都必須等待該 Job 執行完畢,釋放出資源後,才可以繼續進行。現在 Drone 推出一個新功能,叫做 Multiple Machine 機制,現在開發者可以將同一個 Job 內,拆成很多步驟,將不同的步驟丟到不同機器上面去執行,降低部署執行時間,假設現在有兩台機器 A 及 B,你可以將前端的測試丟到 A 機器,後端的測試,丟到 B 機器,來達到平行處理,並且享受兩台機器的資源,在沒有這機制之前,只能在單一機器上面跑平行處理,沒有享受到多台機器的好處。

影片介紹

<iframe width="560" height="315" src="https://www.youtube.com/embed/IRf9yyaHQ5I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

實際範例

底下來看看如何將前端及後端的工作拆成兩台機器去跑:

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
Clone this wiki locally