軟體開發為何採用持續整合
在軟體開發過程中,我們會涉及到配置管理、原始碼控制、釋出計劃、審計、符合性和整合,以及構建測試和部署流程、驗收測試、依賴管理和生產環境的建立與管理,很多人認為這些與確定需求、實現需求、寫程式碼相比,這些活動並不那麼重要,它只為是軟體開發過程很小的一部分並且不需求多大的技術投入。其實不然,恰恰相反它們會消耗大量的時間和精力,而且是成功交付軟體的關鍵因素。假如沒有關注這一方面帶來的潛在風險,就可能耗費大量不必要的資金,甚至導致整個專案嚴重延期。
如果沒有持續整合,我們可能會遇到下列問題:
1、如何將一個想法以最快的速度交付給使用者。
2、如何協調開發人員、測試人員,以及構建和運維人員在一起高效地工作。
3、在釋出當天是否遇到很多的問題,釋出過程時候需要很長的時間。
4、是否在開發完成之後才釋出軟體,失敗後長期的加班。
5、如何快速的獲取使用者的反饋,並讓團隊人員及時的改正。
6、生產環境是否還是採用的手工部署,還在為不同環境之間的部署煩惱。
7、在開發過程中,應用程式在相當長的一段時間內無法執行,無法驗證每次修改的正確性。
一行程式碼的改動需要花多長時間才能部署上線,處理方式是否可重複且可靠呢?從決定做某種修改到該修改結果正式上線的這段時間稱為週期時間。對任何專案而言,它都是一個極為重要的度量標準。
軟體開發的首要任務是儘早交付有價值的軟體並讓客戶滿意,速度是至關重要的,因為未交付的軟體就意味著成本。如果不能按時按量的交付,就會產生不必要的成本浪費。而為了更好的協調組內人員高效的工作,在整個交付過程中,團隊中的每一個成員都必須對每一個交付特性負責,無論什麼樣的修改都應該觸發反饋流程,反饋應該儘快發出,團隊必須接受反饋,並依據它作出相應的行動。快速的交付使你能夠驗證那些新開發的特性或者修復的缺陷是否真的有用。
為了達到短週期、高質量的交付目標,釋出軟體必須自動且頻繁化。
自動化:構建、部署、測試、釋出
頻繁化:頻繁釋出,每個釋出版本之間的差異會很小,大大減少與釋出相關的風險,且容易回滾,頻繁釋出也會加快反饋速度。每當有人提交程式碼,就對整個應用進行構建,執行全面的自動化測試,以驗證其正確性。更重要的是,如果構建或測試失敗了,開發團隊就要停下手頭的工作,立即修復它,時時刻刻都要讓正在開發的軟體一直處於可工作的狀態。
實現持續整合,你需要的:
1、版本控制,所有涉及產品的都要加入到版本控制中,包括構建與部署指令碼。
2、自動化構建,自動化的構建整個過程,縮短週期時間(Cycle time)。
3、持續整合系統,Jenkins, ThoughtWorks公司的Go,JeBrains的TeamCity等。
提交程式碼必須遵守以下原則:
1、檢視構建是否成功,如果失敗,停下手頭的工作和團隊中的其他人一起修復。
2、如果構建且測試全部通過,就從版本控制庫中的程式碼更新到自己的開發環境上。
3、在自己的修改上重新構建,執行所有的測試,確保在自己機器上的程式碼都是正確的且工作正常。
4、如果本地構建成功, 再從版本構建庫中更新程式碼到本地, 再做一次構建,如果成功的話,就提交本地的修改到版本庫中。
5、在遠端持續整合伺服器上再次構建包含你的這次提交的構建結果(通常是自動的)。
6、如果構建失敗,就停下手中的事,在自己的開發機上修復這個問題後,再重新回到步驟3.。
7、構建成功,小慶祝一下,並開始下一項任務。
持續整合縮短從想法到商業價值實現的時間,減少時間和降低風險,增加反饋,改進負責交付的開發、測試和運維人員之間的協作關係。
====================================分割線================================
最新內容請見作者的GitHub頁:http://qaseven.github.io/
相關文章
- CodeArts持續發力輸出,華為雲重塑軟體開發
- 何為軟體開發的難?
- 持續整合、持續交付與持續部署
- 持續整合、持續部署、持續交付、持續釋出
- 經緯恆潤汽車軟體持續整合平臺全新發布
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 可持續IT報告:為何可持續綠色IT革命時機已到?
- 以 egg.js 為例的持續整合(CI)、持續部署(CD)JS
- Jenkins持續整合Jenkins
- 持續整合 2.0
- 持續整合(二)
- SAP開源的持續整合-持續交付的解決方案
- 你真的懂持續整合、持續交付、持續部署嗎?!
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- Jenkins持續整合配置Jenkins
- CircleCI 與持續整合
- Vue為何採用非同步渲染Vue非同步
- 何為開源,聊聊軟體開發中的那些開源協議協議
- 微軟官方:為開發者減少開發成本,Edge 將採用 Chromium 開發微軟
- 企業級軟體系統開發為何這麼貴?
- 2020年以後...軟體開發人員趨勢為何?
- Taro 小程式持續整合
- AspNetCore&Coding持續整合NetCore
- 什麼是持續整合?
- 持續整合 Jenkins 簡介Jenkins
- 持續整合配置之Nuget
- jenkins+docker 持續整合JenkinsDocker
- 持續整合Jenkins+GitlabJenkinsGitlab
- Jenkins 持續整合使用教程Jenkins
- 使用 Jenkins 建立微服務應用的持續整合Jenkins微服務
- Windows 桌面應用自動和 Jenkins 持續整合WindowsJenkins
- ET-ci — 全自動軟體測試排程(持續整合)平臺
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- 聊聊持續交付與軟體架構架構
- 自己動手開發一個Android持續整合工具-關於TaskAndroid
- 使用流水線外掛實現持續整合、持續部署
- QCon 全球軟體開發大會 | 大型團隊研發效率持續改進實踐