SlideShare a Scribd company logo
那個 Code 不是我弄壞的!
持續整合與版本控制策略
Poy Chang
版本控制策略
為組織尋找適合的協作機制
版本控制策略
Local Computer
Checkout Version Database
version 3
version 2
version 1
file
本機版本控制系統
▪ 複製整個專案資料夾,進行資料備份
▪ 通常會用備份時間以示區別
▪ 簡單、快速
版本控制策略
集中化版本控制系統
▪ 集中管理/保存所有檔案的修訂版本
▪ 管理員可以掌控開發者的權限
▪ 頻繁進出版控伺服器
Computer A
Computer B
file
Checkout
file
Checkout
Central VCS Server
Version Database
version 3
version 2
version 1
Computer A
Version Database
file
version 3
version 2
version 1
Computer B
Version Database
file
version 3
version 2
version 1
Server Computer
Version Database
version 3
version 2
version 1
分散式版本控制系統
▪ 開發者有獨立/完整的版控
▪ 可離線處理版控作業
▪ 較好的分支及合併的能力
版本控制策略
Git Flow 分支開發流程和策略
master
永遠處在 Production Ready 狀態
develop
最新的開發成果,並為下次可發佈的開發狀態
主要分支
feature branches
開發新功能都先從 develop 開分支出來,於開發完成後合併回 develop
release branches
即將進行釋出的版本分支,不開發新功能,只修正 bugs
從 develop 開分支,完成後合併回 master 和 develop 分支
hotfix branches
無法流到下次 release 時釋出,要馬上修正 master 進行上線的情況
從 master 開分支,完成後合併回 master 和 develop
支援性分支
http://nvie.com/posts/a-successful-git-branching-model/
分析程式碼品質
用自動化加速品質循環
DEVELOP
TEAM
OPERATION
TEAM
BUILD OPERATE
MONITOR
DEPLOYCODE
TEST
DevOps Cycle
RELEASEPLAN
CODE REVIEW
BY COMPUTER
CODE REVIEW
BY OURSELF
VSTS + SonarQube
自動化品質分析
DEMO
如何在 VSTS 使用 SonarQube
進行程式碼品質分析
https://poychang.github.io/how-to-config-sonarqube-work-with-vsts/
DEMO

More Related Content

Similar to 那個 Code 不是我弄壞的! 持續整合與版本控制策略

開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
Shengyou Fan
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划mysqlops
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划colderboy17
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
Jimmy Lai
 
Bst svn专项培训
Bst svn专项培训Bst svn专项培训
Bst svn专项培训Wu Liang
 
1~60
1~601~60
1~60
s13993010
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationnetdbncku
 
White paper apc4.0
White paper apc4.0White paper apc4.0
White paper apc4.0ahnlabchina
 
Training apc-4.0
Training apc-4.0Training apc-4.0
Training apc-4.0ahnlabchina
 
Sql优化
Sql优化Sql优化
Sql优化dcshi
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成wait4friend
 
易度文档外发控制系统介绍
易度文档外发控制系统介绍易度文档外发控制系统介绍
易度文档外发控制系统介绍xhgshn
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除5045033
 
Training apc-3.0
Training apc-3.0Training apc-3.0
Training apc-3.0ahnlabchina
 
Training apc-3.0
Training apc-3.0Training apc-3.0
Training apc-3.0ahnlabchina
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
家弘 周
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
Gelis Wu
 
Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
ITband
 

Similar to 那個 Code 不是我弄壞的! 持續整合與版本控制策略 (20)

開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
 
Bst svn专项培训
Bst svn专项培训Bst svn专项培训
Bst svn专项培训
 
1~60
1~601~60
1~60
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
White paper apc4.0
White paper apc4.0White paper apc4.0
White paper apc4.0
 
Training apc-4.0
Training apc-4.0Training apc-4.0
Training apc-4.0
 
Sql优化
Sql优化Sql优化
Sql优化
 
Xpp
XppXpp
Xpp
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成
 
易度文档外发控制系统介绍
易度文档外发控制系统介绍易度文档外发控制系统介绍
易度文档外发控制系统介绍
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
 
Training apc-3.0
Training apc-3.0Training apc-3.0
Training apc-3.0
 
Training apc-3.0
Training apc-3.0Training apc-3.0
Training apc-3.0
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
 
Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
 

More from Poy Chang

我的 DevOps 故事
我的 DevOps 故事我的 DevOps 故事
我的 DevOps 故事
Poy Chang
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手
Poy Chang
 
打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案
Poy Chang
 
Vue 和 Angular 開發習慣
Vue 和 Angular 開發習慣Vue 和 Angular 開發習慣
Vue 和 Angular 開發習慣
Poy Chang
 
使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​
Poy Chang
 
#19 Azure with Build 2019 - Windows Terminal
#19 Azure with Build 2019 - Windows Terminal#19 Azure with Build 2019 - Windows Terminal
#19 Azure with Build 2019 - Windows Terminal
Poy Chang
 
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Poy Chang
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Poy Chang
 
Azure TechDay Party - AIoT 智慧物聯網時代
Azure TechDay Party - AIoT 智慧物聯網時代Azure TechDay Party - AIoT 智慧物聯網時代
Azure TechDay Party - AIoT 智慧物聯網時代
Poy Chang
 
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
Poy Chang
 
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
Poy Chang
 
Global Azure Bootcamp @ 北京 - Azure Bot Servic 快速打造你的機器人
Global Azure Bootcamp @ 北京 - Azure Bot Servic  快速打造你的機器人Global Azure Bootcamp @ 北京 - Azure Bot Servic  快速打造你的機器人
Global Azure Bootcamp @ 北京 - Azure Bot Servic 快速打造你的機器人
Poy Chang
 
智慧型校園Ip網路監控系統
智慧型校園Ip網路監控系統智慧型校園Ip網路監控系統
智慧型校園Ip網路監控系統Poy Chang
 

More from Poy Chang (13)

我的 DevOps 故事
我的 DevOps 故事我的 DevOps 故事
我的 DevOps 故事
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手
 
打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案
 
Vue 和 Angular 開發習慣
Vue 和 Angular 開發習慣Vue 和 Angular 開發習慣
Vue 和 Angular 開發習慣
 
使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​
 
#19 Azure with Build 2019 - Windows Terminal
#19 Azure with Build 2019 - Windows Terminal#19 Azure with Build 2019 - Windows Terminal
#19 Azure with Build 2019 - Windows Terminal
 
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
 
Azure TechDay Party - AIoT 智慧物聯網時代
Azure TechDay Party - AIoT 智慧物聯網時代Azure TechDay Party - AIoT 智慧物聯網時代
Azure TechDay Party - AIoT 智慧物聯網時代
 
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
使用 Dependency Injection 撰寫簡潔 C# 程式碼原來這麼簡單 (.NET Conf 2018)
 
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
從雲端到邊緣 Azure IoT Edge 幫工廠設備長智慧
 
Global Azure Bootcamp @ 北京 - Azure Bot Servic 快速打造你的機器人
Global Azure Bootcamp @ 北京 - Azure Bot Servic  快速打造你的機器人Global Azure Bootcamp @ 北京 - Azure Bot Servic  快速打造你的機器人
Global Azure Bootcamp @ 北京 - Azure Bot Servic 快速打造你的機器人
 
智慧型校園Ip網路監控系統
智慧型校園Ip網路監控系統智慧型校園Ip網路監控系統
智慧型校園Ip網路監控系統
 

那個 Code 不是我弄壞的! 持續整合與版本控制策略