天天飞车新版本2017
資訊中心

首頁 > 資訊中心 > 公司動態

易立德能力建設篇:持續集成及應用

發布日期:2019-02-14 17:01:34   瀏覽量:434


一、簡介


隨著公司研發流程的規范化,易立德已經形成了一套標準研發流程,其中重要的組成部分就是持續集成(Continuous integration,簡稱CI)。簡單的說,持續集成指的是,頻繁地(一天多次)將代碼集成到主干。


它的好處主要有以下幾點:


1.減少風險

通過每天集成變化的代碼并發布,我們將減少項目的風險。這樣做將可以推動盡早發現缺陷;盡早估量軟件的質量;盡早排除假設。
----盡早發現缺陷并修復缺陷   軟件開發中每天持續集成,并進行測試和評審,這些過程有許多的機會發現缺陷。
----盡早估量軟件質量   通過在持續集成中實施持續測試和評審的活動,軟件產品的健康屬性,例如復雜性,將被全程跟蹤。
----盡早排除假設通過在一個純凈的環境中,用同樣的腳本和過程構建和測試軟件,開發人員可以減少假設:是否使用了不正確的第三方的庫,是否使用了不同的環境參數等。


2 .減少重復的過程

通過減少重復性的動作來節省時間,成本,提高效率。在軟件的開發過程中,有許多重復性的活動,這些活動包括代碼編譯,數據庫集成,測試,評審,部署,信息反饋等。通過自動化的持續集成,你將獲得如下能力:
----任何時候都可以執行一致的流程;
----每個開發過程的步驟都是依次執行的;在構建腳本,將依次執行編譯,自動測試等動作。
----在版本控制庫中,當代碼提交發生時,構建過程自動執行。
通過減少在重復性工作上的勞動力,讓開發工程師做更多有價值的工作。


3. 產生可部署的軟件

持續集成可以讓項目組在任一點上及時提交可以安裝的軟件包。這是持續集成最可看見的一個益處。我們可以無休止地討論改善軟件質量和減少風險,但是對用戶或者客戶來說,可以安裝的軟件包是最切實可行的


4.使得項目更加透明


5. 建立項目信心

持續集成的目的,就是讓產品可以快速迭代,同時還能保持高質量。它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。Martin Fowler說過,"持續集成并不能消除Bug,而是讓它們非常容易發現和改正。"與持續集成相關的,還有兩個概念,分別是持續交付和持續部署。


二、持續交付


持續交付(Continuousdelivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。持續交付可以看作持續集成的下一步。它強調的是,不管怎么更新,軟件是隨時隨地可以交付的。



三、持續部署


持續部署(continuousdeployment)是持續交付的下一步,指的是代碼通過評審以后,自動部署到生產環境。持續部署的目標是,代碼在任何時刻都是可部署的,可以進入生產階段。持續部署的前提是能自動化完成測試、構建、部署等步驟。它與持續交付的區別,可以參考下圖。



四、流程


根據持續集成的設計,代碼從提交到生產,整個過程有以下幾步。


4.1 提交


流程的第一步,是開發者向代碼倉庫提交代碼。所有后面的步驟都始于本地代碼的一次提交(commit)。


4.2 測試(第一輪)


代碼倉庫對commit操作配置了鉤子(hook),只要提交代碼或者合并進主干,就會跑自動化測試。測試有以下幾種:

  • 單元測試:針對函數或模塊的測試
  • 集成測試:針對整體產品的某個功能的測試,又稱功能測試
  • 端對端測試:從用戶界面直達數據庫的全鏈路測試

第一輪至少要跑單元測試。


4.3 構建


通過第一輪測試,代碼就可以合并進主干,就算可以交付了。交付后,就先進行構建(build),再進入第二輪測試。所謂構建,指的是將源碼轉換為可以運行的實際代碼,比如安裝依賴,配置各種資源(樣式表、JS腳本、圖片)等等。常用的構建工具如下。

  • Jenkins
  • Travis
  • Codeship
  • Strider

Jenkins和Strider是開源軟件,Travis和Codeship對于開源項目可以免費使用。它們都會將構建和測試,在一次運行中執行完成。


4.4 測試(第二輪)


構建完成,就要進行第二輪測試。如果第一輪已經涵蓋了所有測試內容,第二輪可以省略,當然,這時構建步驟也要移到第一輪測試前面。第二輪是全面測試,單元測試和集成測試都會跑,有條件的話,也要做端對端測試。所有測試以自動化為主,少數無法自動化的測試用例,就要人工跑。需要強調的是,新版本的每一個更新點都必須測試到。如果測試的覆蓋率不高,進入后面的部署階段后,很可能會出現嚴重的問題。


4.5 部署


通過了第二輪測試,當前代碼就是一個可以直接部署的版本(artifact)。將這個版本的所有文件打包存檔,發到生產服務器。生產服務器將打包文件,解包成本地的一個目錄,再將運行路徑的符號鏈接(symlink)指向這個目錄,然后重新啟動應用。這方面的部署工具有Ansible,Chef,Puppet等。


4.6 回滾


一旦當前版本發生問題,就要回滾到上一個版本的構建結果。最簡單的做法就是修改一下符號鏈接,指向上一個版本的目錄。

五、總結


隨著持續集成在公司范圍內的全面推廣,我們的開發效率和開發質量都有了穩定的提高。但持續集成是不能孤立存在的;如文中所述,要充分發揮持續集成的威力,單元測試和自動化測試是必不可少的。同時,持續集成只是萬里長征的第一步,要做到持續交付和持續部署,我們還有大量深入細致的工作要完成。持續集成團隊和一線項目同事攜手并進,持續改進,不斷提升交付質量和效率。





易立德公司英雄加盟熱線:

電  話:0755-84571939

郵  箱:[email protected]

加盟技術:java、windchill、BA、前端開發

加盟地點:深圳、西安、成都、上海


華南區:深圳龍崗區坂田街道黃君山山海商業廣場C棟4-5樓

西南區:成都市高新西區西芯大道國騰科技園1號樓3層

西北區:西安市高新區天谷八路環普科技產業園C座301室

總  部:上海市長寧區新華路728號華聯發展大廈908-910室







  • 上海
  • 深圳
  • 西安
  • 成都
上海市長寧區新華路728號華聯發展大廈908-910室
深圳市龍崗區坂田街道黃君山111號山海商業廣場C棟4-5樓
西安市高新區天谷八路環普科技產業園C座301室
成都市高新區天府三街288號大有智慧廣場1棟8樓
? 2017 上海易立德信息技術股份有限公司 . All Rights Reserved. 滬ICP備16053493號 

天天飞车新版本2017