持續集成(Continuous integration)是一種軟件開發實踐,即團隊開發成員常常集成它們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤 [1]。git
持續集成 至關於將傳統工業的 流水線 做業的思想應用到現代的 軟件工業 中來。不一樣之處在於,工業流水線 最終出來的是一個一個的產品複製體,可是 軟件流水線 最終出來的是一代一代更新迭代的版本,可是共同點在於:總體產出的效率將極大地增長。github
首先說CI解決了的問題:web
這些都是 現代敏捷軟件工程 理論中所要求達到的目標。服務器
[1] | 百度百科.持續集成.2015 |
傳統開發協做模式的各類角色:架構
並且在傳統的過程當中,存在以下特色:運維
而 持續集成 的工程思想引進以後,會發生以下變化:工具
也就是說,全部的角色都要先是一個 開發人員 而後纔是一個 XX領域人員。這種模式在目前IT智力密集的互聯網行業特別明顯,在一些主要的在線招聘平臺裏面能夠看到大的互聯網公司的招聘信息基本都是:單元測試
而後給的薪水待遇都是開發人員的待遇,甚至目前不少公司的崗位編制都是屬於開發人員之列了。學習
在互聯網行業裏面,軟件開發模式已經從 傳統軟件工程 向 敏捷軟件工程 變遷,實現此思想的相應的方法也變遷,那麼相應的從業人員的技能要求也要變遷。測試
換句話來講:IT行業的領域崗位,必需要掌握開發技能,若是不作出一些改變和提高,那麼接下來的現象就是開發人員全線開始佔領IT領域類的崗位了。
持續集成的典型的工具就是開源系統 Jenkins。經過對 Jenkins 工具的應用的研究,繪製了一個全流水線的軟件開發圖,以下:
前期 CI 環境準備:
使用 Jenkins 工具將這些工具鏈都組合起來
將流水線調試成功,全部環境搭建好
以上至關因而CI體系的創建階段,是會有必定的技術力量投入,可是後面的反覆迭代過程,則是來收回這些成本的。
後期迭代工做流:
開發人員向git服務器指定分支提交了新的代碼
git服務器的 webhook 接收到提交事件後向 Jenkins 服務器指定接口發起請求,執行構建腳本
Jenkins 執行自動化測試腳本
Jenkins 向 自動化發佈 系統發起請求
自動化發佈系統 進行自動灰度發佈
觸發 自動化測試系統
逐步全網發佈
基本上,如上步驟能夠全自動化無人值守完成。整個過程高效且不容易出錯,對比手工式的生產模式,持續集成手段將極大地減小每次迭代的週期,保證總體項目能夠按照極小的步伐和極高的頻率進行穩步演進。
此文做爲 持續集成 系列文章的開端,還有一些偏重於理論部分,以讓你們對總體架構有所瞭解,同時也創建起現代的軟件工程的總體觀念。
後續的部分將側重於環境搭建及相應的環境代碼的開發的介紹,最後可以造成一套完整的可以提供生產力的 持續集成 系統。
做者: | Harmo哈莫 |
---|---|
做者介紹: | https://zhengwh.github.io |
技術博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
時間: | 2015-11 |
版權聲明: | 歡迎以學習交流爲目的讀者隨意轉載,可是請 【註明出處】 |
支持本文: | 若是文章對您有啓發,能夠點擊博客右下角的按鈕進行 【推薦】 |