SlideShare uma empresa Scribd logo
1 de 61
Open Source 的 DevOps 工具箱
陳鋒逸(小風)
2016/08/20 @ Coscup
自我介紹
• 陳鋒逸(陳小風)
• 講師經歷
• 微軟最有價值專家 (MVP)
• Skilltree 兼任講師
• Techday 講師 (2014)
• JSDC 講師 (2013)
• 社群研討會講師
• AgileCommunity.tw
• Javascript.tw
• twMVC
2
粉絲團: 愛流浪的小風
什麼是 DevOps ?
什麼是 DevOps ?
Dev Ops
開發加上維運
自動化
快速部署
用程式碼建置環境
功能開關
Kanban
DevOps 是一種文化
同伴
流程
產品
• 開發與維運
• 協同合作
• 工作流程
• 持續改善
• 產品走向與規劃
為什麼需要 DevOps?
變化快速
協同合作
時間就是金錢
配合趨勢
為什麼需要 DevOps?
變化快速
協同合作
時間就是金錢
配合趨勢
為什麼需要 DevOps?
• 沒有對的,只有最 適合 的
• 擁抱變化,適應變化
• 降低成本
• 專注開發
Open Source Project
• 大家共同建置的 產品
• 多人合作的專案
• 流程很重要
• Pull Request
• Code Review
• Contribute Guide
How to start?
計畫
開發測
試
發行版
本
經驗學
習
目標
計畫
開發測
試
發行版
本
經驗學
習
 想要解決的問題
 核心功能
 Roadmap
 發展方向
 單元、整合測試
 Code Review
 程式碼品質
 溝通討論
 問題修正
 使用者反饋
 新功能想法
 Nightly Build
 發行正式版本
 Changelogs
 說明文件
教練...我想寫 Code...
• 讓開發者專注 開發
• 重複的事情交給 自動化工具
• 只要會用 Github
• 讓每個人都容易上手
專案的工作
Github
Testing
Code
Quality
Document Package Changelogs Report
我們要做的
Developer
Coding
Code
Review
理想的流程
Github
Build
Testing
Code
Quality
Document
Release
Package
Changelogs Report
CI Server 自動處理我們要做的
Developer
Coding
Code
Review
從計畫開始
開始動手
• 建立一個新的專案
• 找出專案想 解決 的問題
• 列出希望擁有的功能
• 動手 實現第一個功能
• Baby Step
使用 issue 管理項目
• 足夠使用
Zenhub
• 一秒變看板
Zenhub 的好處
• https://www.zenhub.com/
• 使用 firefox 或 chrome 的 擴充功能
• 為 敏捷開發 而設計
• 容易 管理 問題及功能
• 方便 規劃進度
Zenhub - Burndown
• 檢視 Milestone 進度
Zenhub - Todo
• 管理 待辦清單
Zenhub - Epic
• 複雜功能 拆解
Recap
• 動手進行你的專案
• 設定目標
• 逐步實現
開發與測試
多人開發的問題?
風險
潛在問
題
品質不
穩定
程式看
不懂
開發與測試
function calculator() {
this.getDiscountPrice = function(totalPrice) {
if (totalPrice >= 200) {
return totalPrice * 0.8;
} else if (totalPrice >= 100 && totalPrice < 200) {
return totalPrice * 0.9
}
return totalPrice
}
}
describe('Calculator', function() {
describe('#GetDiscountPrice(totalPrice)', function() {
describe('if total price over 200, get 80% discount', function() {
it('should return 200 if total price is 250', function() {
var result = calculator.getDiscountPrice(250);
result.should.equal(200);
});
});
describe('if total price over 100 and less than 200, get 90% discount', function() {
it('should return 135 if total price is 150', function() {
var result = calculator.getDiscountPrice(150);
result.should.equal(135);
});
});
describe('if total price less than 100, no discount', function() {
it('should return 80 if total price is 80', function() {
var result = calculator.getDiscountPrice(80);
result.should.equal(80);
});
});
});
});
商業邏輯
測試程式
不容易理解,需花時間看 Code
換種工具試試看…
• 改用 BDD
• 用 口語 的方式撰寫測試程式
功能: Calculator
場景: 當金額高於 200 元時,可享有 80% 折扣
假設 顧客消費總金額為 "250" 元
當 計算折扣後金額
那麼 折扣後金額應該為 "200" 元
搭配 Pickles
• http://www.picklesdoc.com/
• 測試就是你的 說明文件
• Windows only (期待 .Net Core)
• 支援多種格式 (包含 Markdown)
• 整合 Github Page
產出可瀏覽的網站
• 轉換 Feature 為不同格式
Features
Html
Word
Excel
測試即文件
變成說明文件
從測試到文件
• 合併回 master 自動產生
• 透過 CI Server 自動部署到 Github Page
• 使用說明搭配範例講解
• 保持與程式碼 同步
Check In Code CI Build
建置
測試
自動更新文件
程式碼品質
Simian
測試涵蓋率
程式碼品質
程式碼規則
SonarQube
• 軟體品質的 健檢報告
SonarQube – Tech Debt
• 量化技術債
SonarQube – Tech Debt
• 修改說明
SonarQube – code coverage
• 測試涵蓋率
SonarQube – Pull Request
• 整合 Pull Request
Recap
• 讓測試變成最好的文件
• 替自己專案作健康檢查
發行最新版本
使用 CI Server
• Continuous Integration Server
• 有更新就 建置 及 測試
• 分析 Pull-Request
• 第一時間找出 錯誤
• 處理自動化相關工作
產生文件
發行版本
程式碼檢查
事件通知
建置檔案
YAML
• 讓 建置設定 也可以做版控
• 避免機器 汰換 風險
YAMLYAML Github
產生文件
發行版本
程式碼檢查
事件通知
建置檔案
搭配 git flow
• 配合 產品 生命週期
• master 代表 穩定 的版本 (搭配 Tag)
• develop 代表 進行中 的版本
• 新功能一律建立 feature branch
• 搭配 CI Server 合併及發行版本
搭配 git flow
• 平行開發 不互相影響
master
develop
Feature A Feature B
Tag 1.0.0
自動發行 1.0.0 版
每次 commit 發行 PreRelease 版
MileStone 完成
Commitizen
• Commit message 撰寫工具
• 統一 Commit Message 的撰寫風格
• 產生 Changelogs
• 讓每次 Commit 目的更明確
版本更新紀錄
• 清楚的 Commit Message
版本更新紀錄
• 使用 Commit Message 產生 Changelogs
Badge
• Github 的專案狀態
Badge
• 專案 入口
• 一眼了解 重要數據
建置通過 測試涵蓋率 程式碼品質 最新版本
Badge
• http://shields.io/
Shields.io
• 支援 大部分 線上服務
• 沒有的可以自己發 PR
• 支援 客製化
• https://img.shields.io/badge/{類別}-{資料}-{顏色}.svg
Recap
• 隨時確認程式碼健康狀態
• 利用 git flow 管理產品生命週期
• 撰寫更清楚的 Commit message
• 透過 Badge 一眼判斷狀態
持續改善
讓功能更好用
• 沒有完美的,只有最 適合 的
• 了解 其他角度 的需求
• 找出 最多人 碰到的問題
• 讓 專案 更加的好用
Google Group
• 發問與討論
Gitter
• 與 Github 整合的聊天室工具
Github issue
• Now support Reactions
https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments
良好循環
計畫 開發測試
發行版本經驗學習
• 吸收經驗,作為新的 目標
Recap
• 了解使用者使用狀況
• 打造更好用的專案
總結
• 工具很好用
• 沒有最好的,只有最適合的
• 讓大家開發更愉快
• 重點在本體
Reference
• DevOps Sample Project
https://github.com/kirkchen/EFRepository
• Github DevOps-tools
https://github.com/showcases/devops-tools
Q&A

Mais conteúdo relacionado

Mais procurados

使用 ES 6/7 特性开发 Node 项目
使用 ES 6/7 特性开发 Node 项目使用 ES 6/7 特性开发 Node 项目
使用 ES 6/7 特性开发 Node 项目Welefen Lee
 
我們與Azure DevOps的距離
我們與Azure DevOps的距離我們與Azure DevOps的距離
我們與Azure DevOps的距離Edward Kuo
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScriptGelis Wu
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練12015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1Duran Hsieh
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18twMVC
 
前端编译平台
前端编译平台前端编译平台
前端编译平台Welefen Lee
 
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)Gelis Wu
 
6.twitter bootstrap 元件介紹
6.twitter bootstrap 元件介紹6.twitter bootstrap 元件介紹
6.twitter bootstrap 元件介紹Nelson Chen
 
7. 設計樣板套用
7. 設計樣板套用7. 設計樣板套用
7. 設計樣板套用Nelson Chen
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践Welefen Lee
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎Gelis Wu
 
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试 jsTestDriver本地自动化测试 jsTestDriver本地自动化测试
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试 minghe36
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
網站部署與第三方服務整合
網站部署與第三方服務整合網站部署與第三方服務整合
網站部署與第三方服務整合Shengyou Fan
 
Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰Cheng Feng
 
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的DevopsEdward Kuo
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發Edward Kuo
 

Mais procurados (20)

工作坊總結
工作坊總結工作坊總結
工作坊總結
 
使用 ES 6/7 特性开发 Node 项目
使用 ES 6/7 特性开发 Node 项目使用 ES 6/7 特性开发 Node 项目
使用 ES 6/7 特性开发 Node 项目
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
我們與Azure DevOps的距離
我們與Azure DevOps的距離我們與Azure DevOps的距離
我們與Azure DevOps的距離
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練12015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18
 
前端编译平台
前端编译平台前端编译平台
前端编译平台
 
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
 
6.twitter bootstrap 元件介紹
6.twitter bootstrap 元件介紹6.twitter bootstrap 元件介紹
6.twitter bootstrap 元件介紹
 
7. 設計樣板套用
7. 設計樣板套用7. 設計樣板套用
7. 設計樣板套用
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎
 
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试 jsTestDriver本地自动化测试 jsTestDriver本地自动化测试
jsTestDriver本地自动化测试 jsTestDriver本地自动化测试
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
網站部署與第三方服務整合
網站部署與第三方服務整合網站部署與第三方服務整合
網站部署與第三方服務整合
 
Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰Inception自动审核系统设计与实现 王竹峰
Inception自动审核系统设计与实现 王竹峰
 
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
[ Study4TW Visual Studio Everywhere ] Vsts + microsoft teams 建構企業的Devops
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
 

Semelhante a Open source的devops工具箱 公開版@coscup2016

合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探美团点评技术团队
 
Hiiir 百人團隊導入敏捷實踐經驗
Hiiir 百人團隊導入敏捷實踐經驗Hiiir 百人團隊導入敏捷實踐經驗
Hiiir 百人團隊導入敏捷實踐經驗ChiaHsien Lee
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航Edward Kuo
 
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Pu Shiming
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbenchtblanlan
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdfssuserd6c7621
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台taobao.com
 
QCon - Engineering Productivity in Large Scale Development
QCon - Engineering Productivity in Large Scale DevelopmentQCon - Engineering Productivity in Large Scale Development
QCon - Engineering Productivity in Large Scale DevelopmentVincent Xia
 
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践 QCon - 支持百度万人开发的工具装备及百度工程效率提升实践
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践 Vincent Xia
 
石玉磊 Web rebuild
石玉磊 Web rebuild石玉磊 Web rebuild
石玉磊 Web rebuildWebrebuild
 
白玉磊 Webrebuild
白玉磊 Webrebuild白玉磊 Webrebuild
白玉磊 Webrebuild裕波 周
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)Gelis Wu
 
JIRA Live DEMO 2020 v17
JIRA Live DEMO 2020 v17JIRA Live DEMO 2020 v17
JIRA Live DEMO 2020 v17Linktech
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgileCommunity
 

Semelhante a Open source的devops工具箱 公開版@coscup2016 (20)

合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Web Development Roadmap
Web Development RoadmapWeb Development Roadmap
Web Development Roadmap
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
 
Hiiir 百人團隊導入敏捷實踐經驗
Hiiir 百人團隊導入敏捷實踐經驗Hiiir 百人團隊導入敏捷實踐經驗
Hiiir 百人團隊導入敏捷實踐經驗
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航
 
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbench
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台
 
QCon - Engineering Productivity in Large Scale Development
QCon - Engineering Productivity in Large Scale DevelopmentQCon - Engineering Productivity in Large Scale Development
QCon - Engineering Productivity in Large Scale Development
 
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践 QCon - 支持百度万人开发的工具装备及百度工程效率提升实践
QCon - 支持百度万人开发的工具装备及百度工程效率提升实践
 
石玉磊 Web rebuild
石玉磊 Web rebuild石玉磊 Web rebuild
石玉磊 Web rebuild
 
白玉磊 Webrebuild
白玉磊 Webrebuild白玉磊 Webrebuild
白玉磊 Webrebuild
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
JIRA Live DEMO 2020 v17
JIRA Live DEMO 2020 v17JIRA Live DEMO 2020 v17
JIRA Live DEMO 2020 v17
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDD
 

Open source的devops工具箱 公開版@coscup2016