持續整合(continuous integration)是一種軟體開發實踐,即團隊開發成員經常整合它們的工作,通過每個成員每天至少整合一次,也就意味著每天可能會發生多次整合。每次整合都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現整合錯誤 [1]。
持續整合相當於將傳統工業的流水線作業的思想應用到現代的軟體工業中來。不同之處在於,工業流水線最終出來的是乙個乙個的產品複製體,但是軟體流水線最終出來的是一代一代更新迭代的版本,但是共同點在於:整體產出的效率將極大地增加。
首先說ci解決了的問題:
這些都是現代敏捷軟體工程理論中所要求達到的目標。
[1]
傳統開發協作模式的各種角色:
測試人員
發布人員
運維人員
而且在傳統的過程中,存在如下特點:
而持續整合的工程思想引進之後,會發生如下變化:
測試人員
發布人員
運維人員
然後給的薪水待遇都是開發人員的待遇,甚至目前很多公司的崗位編制都是屬於開發人員之列了。
在網際網路行業裡面,軟體開發模式已經從傳統軟體工程向敏捷軟體工程變遷,實現此思想的相應的方法也變遷,那麼相應的從業人員的技能要求也要變遷。
換句話來說:it行業的領域崗位,必須要掌握開發技能,如果不做出一些改變和提公升,那麼接下來的現象就是開發人員全線開始占領it領域類的崗位了。
持續整合的典型的工具就是開源系統jenkins。通過對jenkins工具的應用的研究,繪製了乙個全流水線的軟體開發圖,如下:
前期ci環境準備:
開發人員都開發好相應的**
使用jenkins工具將這些工具鏈都組合起來
將流水線除錯成功,所有環境搭建好
以上相當於是ci體系的建立階段,是會有一定的技術力量投入,但是後面的反覆迭代過程,則是來收回這些成本的。
後期迭代工作流:
開發人員向git伺服器指定分支提交了新的**
git伺服器的webhook接收到提交事件後向jenkins伺服器指定介面發起請求,執行構建指令碼
jenkins伺服器順序執行構建指令碼
jenkins執行自動化測試指令碼
jenkins向自動化發布系統發起請求
自動化發布系統進行自動灰度發布
觸發自動化測試系統
逐步全網發布
基本上,如上步驟可以全自動化無人值守完成。整個過程高效且不容易出錯,對比手工式的生產模式,持續整合手段將極大地減少每次迭代的週期,保證整體專案可以按照極小的步伐和極高的頻率進行穩步演進。
後續的部分將側重於環境搭建及相應的環境**的開發的介紹,最後能夠形成一套完整的能夠提供生產力的持續整合系統。
harmo哈莫
作者介紹:
技術部落格:
email:
1295351490
2015-11
支援本文:
持續整合 CI
引子 記得剛加入趨勢開始開發工作 的時候曾被告知,趨勢有一套auto build的系統,會每天夜裡自動把當天check in的 進行構建,生成qa可測試 的build。每個rd都得小心提交code,因為專案結束的時候會看auto build的失敗率。可是構建失敗總是在所難免,尤其是每次要提交cand...
持續整合CI
持續整合是什麼?持續整合 continuous integration,簡稱ci 指的是,頻繁地 一天多次 將 整合到主幹。讓產品可以快速迭代,同時還能保持高質量。持續交付 continuous delivery 指的是,頻繁地將軟體的新版本,交付給質量團隊或者使用者,以供評審。它強調的是,不管怎麼...
CI持續整合與軟體測試
it 企業中ci cd的應用愈加廣泛,成為推動軟體研發活動的重要基礎設施服務,同時推動 devops 模式的實際落地。一般傳統或者狹義 普遍的 ci cd,是指持續整合 continuous integration,ci 和持續交付 continuous delivery,cd 而更加廣義 全面的理...