持續整合 Continuous Integration作為極限編程的其中一個實踐而出現的。但是其自身所體現出的價值卻已經超出極限編程了。
目前在我們的項目中所採用的CI已經逐漸的從最開始的抵制到現在被項目群組成員所接受,從個人的觀點來看,持續整合為項目提供了以下的幾點作用:
1. 及時發現bug(通過acceptance test和UT),能夠在提交代碼後第一時間找出bug,使得debug的時間大幅縮短。CI不能阻止我們產生bug,但是可以協助我們減少debug所用的時間,免去了之前做項目進行波及分析同時無法自測試的問題。(這點是我認為的CI提供給開發人員最為重要的的優點)
2. 隨時可以拿出能夠使用的軟體版本,即使它只有最簡單的功能,也比你設計一個擁有全部功能,但是充滿了bug,無法及時發布的版本強。因為在CI中的UT及Acceptance Test都會在每次提交給Mainline以後編譯完成後自動運行,因此只要Pass的版本,那麼必然是測試全部通過,而每一個Acceptance
Test都是一個端到端的類比真實環境下的test case,由此必然保證這些功能點的可用性。(這點是我認為的對於軟體的使用者客戶最為重要的優點,他們能夠通過實實在在的使用beta版本感受開發的進度)
3. 消除了傳統模式下面從project的code到真實可用的軟體package之間的繁瑣部署工作,能夠頻繁的進行發布。傳統上面的開發來說這些工作都不由程式員完成,他們只要交付可供正常work的project code即可,這點工作常由PM或者PO協調完成(因此消除code到實際部署併產生可用的版本之間的鴻溝這點對於PO是對重要的特性)。
當然CI只是保證了快速的從project code產生可用的軟體版本,從可用的軟體版本到真正實際部署的商業運行環境之間任然存在著一條鴻溝,CI所做的工作在此就結束了,剩下的應該交給CD(Continuous Delivery)去完成了,傳統的營運人員需要做的工作。
關於CD目前尚未有一個明確的認識,需要補充相關的理論知識,同時在項目中實際運用並體會到其真正的好處才能做出判斷。
希望自己下次寫出對CD的膚淺理解不會太遠!