-
Notifications
You must be signed in to change notification settings - Fork 8
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
在傳統 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>- Go 語言實戰課程: http://bit.ly/golang-2019
- Drone CI/CD 自動化課程: http://bit.ly/drone-2019
底下來看看如何將前端及後端的工作拆成兩台機器去跑:
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
-
透過 Drone CLI 手動觸發 CI/CD 流程 (0)
-
用 Ansible 安裝 Drone CI/CD 開源專案 (0)
-
有效率的用 jsonnet 撰寫 Drone CI/CD 設定檔 (12)
-
Ansible 設定 Google Container Registry 搭配 Drone 自動上傳 (0)
-
開源專案 Gitea 支援 OAuth Provider (1)
-
在 docker-in-docker 環境中使用 cache-from 提升編譯速度 (5)
-
用 Drone 自動化上傳 Docker Image 到 GitHub Docker Registry (0)
-
Drone 搭配 Kubernetes 部署 Go 語言項目 (0)
-
Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具 (3)
-
用 10 分鐘安裝好 Drone 搭配 GitLab (0)