PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
-
Upload
chen-cheng-wei -
Category
Technology
-
view
392 -
download
3
Transcript of PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
: https://unsplash.com/photos/qAShc5SV83M
Cheng Wei Chen @ PHPConf 2016.10.29
PHPConf 2016自動化與持續整合實作工作坊
DevOps TaiwanFB 社團 - https://www.facebook.com/
groups/DevOpsTaiwan/
: https://stock.tookapic.com/photos/17849
個人目前會浮出水面的社群
四位助教
如在操作上遇到障礙,
可立即尋求助教協助!
如果還未建置環境
請立即建立 !!
實作環境說明
實作環境說明
Local VM
Azure
Local VM你的筆電 (Host)
Local VM你的筆電 (Host)
VM (Guest)
Local VM你的筆電 (Host)
VM (Guest)
CI Server
Selenium Server
CI Worker
Web Server
Docker Container
Local VM你的筆電 (Host)
VM (Guest)
CI Server
Selenium Server
CI Worker
Web Server
Local VM你的筆電 (Host)
VM (Guest)
CI Server
Selenium Server
CI Worker
Web Server
Local VM你的筆電 (Host)
VM (Guest)
CI Server
Selenium Server
CI Worker
Web ServerVM (80) <-> 容器 (80)
Local VM你的筆電 (Host)
VM (Guest)
CI Server
Selenium Server
CI Worker
Web ServerVM (80) <-> 容器 (80)
Host (10080) <-> VM (80)
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80)
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80) DEMO code
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80) DEMO code
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80) DEMO code
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80) DEMO code
Local VM你的筆電 (Host)
VM (Guest)
GitLab
Selenium ServerRunner
測試機VM (80) <-> 容器 (80)
Host (10080) <-> VM (80) DEMO code
172.17.0.4172.17.0.7
172.17.0.6 172.17.0.8
你的筆電
DEMO code
Azure VM
GitLab
Selenium ServerRunner
測試機
Cloud (Azure)
VM
你的筆電
DEMO code
Azure VM
GitLab
Selenium ServerRunner
測試機
Cloud (Azure)
你的筆電
DEMO code
Azure VM
GitLab
Selenium ServerRunner
測試機
Cloud (Azure)
你的筆電
DEMO code
Azure VM
GitLab
Selenium ServerRunner
測試機
Cloud (Azure)
: https://www.pexels.com/photo/coffee-writing-computer-blogging-34600/
工程師 自動化 (
實際狀況
: https://www.pexels.com/photo/photo-33343/
你以為會是 現實情況是 更多真實的狀況是
很多時候是 經常期待是 目標是
: https://www.pexels.com/photo/photo-64609/: https://www.pexels.com/photo/photo-65050/
: https://picjumbo.com/real-mens-tools/: https://pixabay.com/photo-1510561/: https://pixabay.com/en/photo-593313/
: https://www.pexels.com/photo/coffee-writing-computer-blogging-34600/
DevOps
code build test deploy operateplan
Measurement
Monitor Metrics Analytics
Continuous IntegrationContinuous Delivery
DevOps
MonitoringAutomation
Dev
release
Ops Sharing
FastIteration
Feedback
break silos
LEAN
CultureAgile
資訊 透明度 文化
自動化
自動化
Continuous Integration
Continuous Delivery
Automated Build
Continuous Deployment
Continuous Testing
Continuous Monitoring
Automated Testing
Release Automation
code buildplan
Continuous Integration
Continuous Delivery
deploy
Feedback
releasetest
Feedback
operate
Automation
: https://stock.tookapic.com/photos/10628
shell scripts
單元一 示範一
: https://stock.tookapic.com/photos/10628
cron + shell scripts
: https://stock.tookapic.com/photos/10628
讓很多事都能自動化
API單元一
示範二
Trigger
Scripts
Interface
Service
Flow
: https://unsplash.com/photos/Fixg8KipOg8
Bots IM Voice CMD
Interface
舉例
: https://unsplash.com/photos/Fixg8KipOg8
BotsCI PaaS
Service
Worker
舉例
: https://unsplash.com/photos/Fixg8KipOg8
DateTime Trigger Webhook Event
Trigger
舉例
: https://unsplash.com/photos/Fixg8KipOg8
shell scripts
Ansible Azure Functions
hubot scripts
Scripts
舉例
Trigger
Scripts
Interface
Service
Flow
Trigger
Scripts
Interface
Service
Flow環境設置與安裝軟體的先後順序
Command Line
bash xxx.sh
VM, BASH process
xxx.sh
shell script
Trigger
Scripts
Interface
Service
Flow執行動作的先後順序, Crontab 觸發的條件
Command Line
Crontab
VM, BASH process
xxx.sh
shell + cron
Trigger
Scripts
Interface
Service
FlowJob 的生命週期, Job 內程式執行的流程
Web
Job Queue
VM, php process, worker
xxx.php
Job Queue
Trigger
Scripts
Interface
Service
Flow呼叫 API 的順序, 流程
Command Line
ansible-playbook …
VM, ansible process
ansible-playbook.yml
Gitlab API
Trigger
Scripts
Interface
Service
Flow開發流程, 自動化動作的流程
CI Server 的 GUI
code push
CI Server, Worker, Runner
設定於 CI Server 上的自動化腳本
CI / CD
開發流程
: https://www.pexels.com/photo/black-and-white-industry-factory-lamp-5004/
開發流程code build test release deploy operateplan
開發流程code build test release deploy operateplan
開發流程code build test release deploy operateplan
CIcommit dev stagingtest
testprod deploy
開發流程code build test release deploy operateplan
CIcommit dev stagingtest
testprod deploy
開發流程code build test release deploy operateplan
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
開發流程code build test release deploy operateplan
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
localMore Automation ?
今日練習流程
VCScommit CI build devdeploy test
mergeprod deploy
trigger
流程build devdeploy test
mergeprod deploy
VCScommit
Code .gitlab-ci.yml
CI
流程build devdeploy test
mergeprod deploy
VCScommit
GitLab
Code
git push
.gitlab-ci.yml
CI
流程build devdeploy test
mergeprod deploy
VCScommit
Runner
GitLab
Code
git push
Trigger
.gitlab-ci.yml
CI
流程
VM
build devdeploy test
mergeprod deploy
VCScommit
Runner
GitLab
Code
git push
Trigger
.gitlab-ci.yml
Job
CI
流程
VM
Docker
build devdeploy test
mergeprod deploy
VCScommit CI
Runner
GitLab
Code
git push
Trigger
.gitlab-ci.yml
RunnerTrigger
Job
Job
: https://stock.tookapic.com/photos/10628
建立 .gitlab-ci.yml
單元二
練習一
流程devdeploy test
mergeprod deploy
VCScommit CI
Code + Vendor
Code
composer install
build
: https://stock.tookapic.com/photos/10628
composer install
單元二
練習二
流程devdeploy test
mergeprod deploy
VCScommit CI
master-12345.tarCode + Vendor
Code
composer install
tar
build
流程devdeploy test
mergeprod deploy
VCScommit CI
master-12345.tarCode + Vendor
Code
composer install
tar
build
Artifactsupload
: https://stock.tookapic.com/photos/10628
送入 Artifacts 歸檔
單元二
練習四
流程test
mergeprod deploy
VCScommit CI build devdeploy
: https://stock.tookapic.com/photos/10628
新增 stages: deploy-dev
單元三
練習一
流程test
mergeprod deploy
VCScommit CI build devdeploy
Temp Container
Runner
code
run
Ansible playbook dev server
Artifacts
deploy
流程test
mergeprod deploy
VCScommit CI build devdeploy
Temp Container
Runner
code
run
Ansible playbook dev server
Artifacts
1.upload artifact
2.unarchive
deploy
3.setup .env
4.composer dump-autoload
5.update nginx config
6.nginx reload
流程test
mergeprod deploy
VCScommit CI build devdeploy
Temp Container
Runner
code
run
Ansible playbook dev server
Artifacts
deploy
驗證 deploy
流程
mergeprod deploy
VCScommit CI build devdeploy test
流程
mergeprod deploy
VCScommit CI build devdeploy test
Temp Container
Runner
SSH
dev server phpunitrun
: https://stock.tookapic.com/photos/10628
新增 stages: test-dev
單元四
練習一
流程
mergeprod deploy
VCScommit CI build devdeploy test
Temp Container
Runner
SSH
dev server run phpunit
Selenium server
: https://stock.tookapic.com/photos/10628
設定 Selenium Server
單元四
練習二
Think
: https://unsplash.com/photos/hANqC3_kTqU
phpunit.xml code
: https://stock.tookapic.com/photos/10628
GUI 顯示測試覆蓋率
單元四
練習四
: https://stock.tookapic.com/photos/10628
從 dev 至 master
單元五
流程
mergeprod deploy
VCScommit CI build devdeploy test
: https://stock.tookapic.com/photos/10628
新增 dev branch
單元五
練習一
流程
mergeprod deploy
VCScommit CI build devdeploy test
dev branch
dev -> master
CI
git push
git push CI
autoauto
: https://stock.tookapic.com/photos/10628
區分 dev 與 master 的 CI 流程
單元五
練習二
流程
mergeprod deploy
VCScommit CI build devdeploy test
Curl CItrigger
deploy
prod
trigger
: https://stock.tookapic.com/photos/10628
透過 Trigger 驅動 Master 部署
單元五
示範三
流程
VCScommit CI build devdeploy test
mergeprod deploy
trigger
開發流程code build test release deploy operateplan
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
Trigger
Scripts
Interface
Service
Flow
code buildplan
Continuous Integration
Continuous Delivery
deploy
Feedback
releasetest
Feedback
operate
Automation
實際狀況
: https://www.pexels.com/photo/photo-33343/
你以為會是 現實情況是 更多真實的狀況是
很多時候是 經常期待是 目標是
: https://www.pexels.com/photo/photo-64609/: https://www.pexels.com/photo/photo-65050/
: https://picjumbo.com/real-mens-tools/: https://pixabay.com/photo-1510561/: https://pixabay.com/en/photo-593313/
團隊規模
流程
產品\架構
找出你的最佳實踐
最佳 實踐
文化轉變
工具\平台
跨職能人才