Bo-Yi Wu
2017.08.01
 聯發科技後端工程師
 DevOps
 Golang, PHP, Node.js ..
 維護數個 Go 開源專案
 Gitea
 Gin
 Drone
 appleboy @GitHub
 appleboy @twitter
 appleboy @slideshare
 appleboy46 @facebook
2
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
開發 測試 部署
Develop CI CD
工程師
開發 測試 部署
Develop CI CD
自動化
CI/CD 工具選擇
1. Jenkins
2. Gitlab CI
http://bit.ly/devops-tool
Jenkins Drone Gitlab CI
安裝眾多 Plugin 達成需求
需安裝 plugin
你需要會 Java
http://bit.ly/devops-tool
部署基本條件
https://florianbrinkmann.com/en/3473/deployment-gitlab-ci/
https://github.com/appleboy/drone-ssh
還是無法擴充 Yaml 設定
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
基於容器 (Container) 技術的 CI/CD 系統
Everything is a Docker Container
Git Clone
測試
打包
部署
發送訊息
使用 yaml 管理專案流程
後端測試
前端測試
上傳容器
通知訊息
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
一個主伺服器,多個代理服務
Server
agent
agent
agent
Database
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
How to install drone server and agent?
http://docs.drone.io/installation/
Docker Compose && Binary Install
docker pull drone/drone:0.8
docker pull drone/agent:0.8
go install github.com/drone/drone/cmd/drone-agent
go install github.com/drone/drone/cmd/drone-server
Nginx, Caddy, Apache
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
簡單、清楚、明暸
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
專案流程都是寫在這邊
Drone Workspace
Clone 步驟 Build 步驟 Deploy 步驟
Drone Workspace
Clone 步驟 Build 步驟 Deploy 步驟
Git Test Release Docker Discord
 執行測試指令
 分析程式碼
 驗證程式碼品質
 編譯 Binary
 部署 Binary
 編譯 Docker Image
 部署 Docker Container
 通知訊息
Git Test Release Docker Discord
/drone/src/github.com/appleboy/hello-world
Drone 特定字 (勿改)
所有步驟都可以存取此目錄資料
預設進入目錄,所有指令都在此目錄執行
Drone 關鍵字勿改
自己撰寫 clone 指令
將 Tags 一起拉下來
務必打勾
Git Test Release Docker Discord
Drone 關鍵字勿改
名稱可自訂
自選 Image
拉最新版
執行指令
Parallel Execution
前端及後端一起測試
平行測試
平行測試
Mysql, Postgres, Redis
服務名稱
全域變數
服務名稱
服務名稱
Branch, Event, Status, Environment, Matrix
Matrix
只有 Pull request 才跑測試
測試成功才跑
只有上傳 tag 才跑部署到 China
china 標籤才執行
限制 git tag
成功或失敗都通知訊息
Git Test Release Docker Discord
請善用 plugin Marketplace
http://plugins.drone.io/
https://github.com/appleboy/drone-scp
Plugin 映像檔
Deploy Key
打包列表
遠端目錄
https://github.com/appleboy/drone-ssh
Plugin 映像檔
Script 列表
多主機 Host 列表
Git Test Release Docker Discord
Plugin 映像檔
Git Test Release Docker Discord
Plugin Image
方便下次執行更快速
vendor, node_modules
Drone Workspace
Clone 步驟 Build 步驟 Deploy 步驟
建立快取使用快取
雲端儲存
Volume or SFTP cache
http://plugins.drone.io/appleboy/drone-sftp-cache/
http://plugins.drone.io/drillster/drone-volume-cache/
[skip cache] or [cache skip]
Only for SFTP cache
http://plugins.drone.io/drone-plugins/drone-downstream/
http://plugins.drone.io/appleboy/drone-gitlab-ci/
http://plugins.drone.io/appleboy/drone-jenkins/
 為什麼選擇 Drone
 為什麼不用 Jenkins
 為什麼不用 GitLab CI
 Drone 基礎簡介
 Drone 架構擴展
 Drone 安裝方式
 Drone 管理介面
 Drone 測試部署
 Drone 自訂套件
擴充 Yaml 參數
 撰寫程式
 打包 Docker Image
 上傳到 Docker Hub
 測試外掛
任何語言都可以寫 Plugin
PHP, Ruby, Bash, Go, Python …
自訂參數
自訂參數
自訂參數
前置符號 PLUGIN_
如何在本機端測試及除錯?
$ drone exec
啟動速度超快 (低記憶體用量)
啟動速度超快 (低記憶體用量)
不需要管理者 (簡單的 UI 介面)
啟動速度超快 (低記憶體用量)
不需要管理者 (簡單的 UI 介面)
可在本機端運行測試
啟動速度超快 (低記憶體用量)
不需要管理者 (簡單的 UI 介面)
可在本機端運行測試
完全基於 Container 開發
啟動速度超快 (低記憶體用量)
不需要管理者 (簡單的 UI 介面)
可在本機端運行測試
完全基於 Container 開發
任何語言都可以寫 Plugin
啟動速度超快 (低記憶體用量)
不需要管理者 (簡單的 UI 介面)
可在本機端運行測試
完全基於 Container 開發
任何語言都可以寫 Plugin
支援 matrix 編譯 (多版本)
DevOpsDay 優惠價: 1600
http://bit.ly/devops-taipei
Coupon Code: DEVOPSDAY
謝謝大家參與

用 Drone 打造 輕量級容器持續交付平台

Editor's Notes

  • #7 持續開發 持續測試 持續部署
  • #10 http://bit.ly/devops-tool
  • #141 真的只要會簡單的 docker 指令及 bash 就可以寫 plugin 提供給更多人使用 相較於其他 CI/CD 工作有辦法做到嗎? jenkins