Bo-Yi Wu
LaravelConf @ 2017.07.01
1
—  聯聯發科技後端⼯工程師
—  DevOps
—  Golang, PHP, Node.js ..
—  維護數個 Go 開源專案
—  Gitea
—  Gin
—  Drone
—  appleboy @GitHub
—  appleboy @twitter
—  appleboy @slideshare
—  appleboy46 @facebook
2
開發 測試	 部署	
Develop CI CD
4
https://labs.mediatek.com/en
資料庫	
主站	
主站	
資料庫	
資料同步
6	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
7	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
8	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
9
https://laravel.com/docs/5.4/homestead
10
— 安裝 VirtualBox
— 安裝 Homestead
— 修改設定檔
— ⽬目錄分享
— 設定 Nginx
— 多專案設定
— 安裝資料庫 (MySQL or Postgres?)
— …………….
11
12
你不該讓同事踏入 Homestead
13
14
15
16
17
18
19
20	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
Docker 基礎介紹與實戰
21	
https://www.slideshare.net/appleboy/docker-61214768
docker-compose
22
docker-compose -p $(PROJECT) up -d
23
docker-compose -p $(PROJECT) stop
24
docker-compose -p $(PROJECT) ps
25
docker-compose -p $(PROJECT) down
26
docker exec $(container) php artisan migrate
27
docker-compose -p $(PROJECT) 
build --no-cache $(container)
28
docker-compose exec
$(container) /bin/bash
29
30
31	
http://laradock.io/
32	
超多種 Container 讓你選
資料庫	
主站	
主站	
資料庫	
資料同步
34
35
36	
Nginx Docker
37
38
39
40
41
42
43
44
45
46
.env
47
48	
docker-compose.yml
49
50
51
52	
讀取專案 git clone
修改設定 .env
啟動 Docker
安裝 PHP 套件
安裝 Node 套件
編譯前端套件
執⾏行行 DB Migration
53	
讀取專案 git clone
修改設定 .env
啟動 Docker
安裝 PHP 套件
安裝 Node 套件
編譯前端套件
執⾏行行 DB Migration
重複動作
vendor or node_modules
54
55
56	
編輯 composer.json
57
yarn config set cache-folder .yarn-cache
58
59	
修改 package.json
60
61
62
63
64	
http://epicentre.co.uk/testing-services/test2/
65
66
開發 測試	 部署	
Develop CI CD
68
前端測試	
69	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
前端測試	
70	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
Github Flow vs Git Flow
71
72	
Develop
Git Push
Git Tag
Develop
Git Push
Git Tag
Testing
Deploy
Deploy
Deploy
Production
Staging
Production
Testing
Deploy
Staging
CI / CD ⾃自動化測試及部署
73
74	
Jenkins Drone Gitlab CI
75	
Jenkins Gitlab CI
76
基於容器 (Container) 技術的 CI/CD 系統
77
Everything is a Docker Container
	
78
79
.drone.yml
80
前端測試	
81	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
82	
讀取專案	
git clone https://
83	
Git tag ⼀一併下載
前端測試	
84	
讀取專案
85	
定義步驟
86	
定義步驟	
選擇映像檔
87	
定義步驟	
選擇映像檔	
執⾏行行命令
前端測試	
88	
讀取專案	
後端測試
89
90	
服務名稱	
服務名稱	
服務名稱
91	
群組測試	
執⾏行行命令	
定義步驟
92	
服務名稱
減少測試時間,提⾼高效率	
93
Drone Workspace
Clone 步驟 Build 步驟 Deploy 步驟
建立快取使⽤用快取
雲端儲存
95	
使⽤用快取
plugin image
96	
建立快取
plugin image
[skip cache] or [cache skip]
97
前端測試	
98	
讀取專案	
後端測試	
打包檔案
99	
plugin image
多台主機
部署條件
前端測試	
100	
讀取專案	
後端測試	
打包檔案	 部署機器
101	
plugin image
多台主機
部署條件
前端測試	
102	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
103	
⾃自訂訊息
秘密變數
前端測試	
105	
讀取專案	
後端測試	
消息通知
前端測試	
106	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
107
108
https://github.com/go-training/drone-laravel-example
109
110
任何語⾔言都可以寫 Plugin
PHP, Ruby, Bash, Go, Python …
⾃自訂參參數	
⾃自訂參參數	
⾃自訂參參數
前置符號 PLUGIN_
https://github.com/appleboy/drone-php-curl
121
http://bit.ly/oneday-devops
	
122
123
謝謝⼤大家參參與	
124

運用 Docker 整合 Laravel 提升團隊開發效率