隨著(zhù)軟件部署的越來(lái)越成熟,敏捷、DevOps和CI/CD,Docker等詞語(yǔ)慢慢出現在工程師的視野中。對于持續集成,業(yè)界也沒(méi)有一個(gè)通用的模式,每個(gè)團隊可能習慣的方式和關(guān)注點(diǎn)都不一樣。而持續集成的關(guān)鍵在于「持續」與「自動(dòng)化」。這篇文章根據這兩個(gè)關(guān)鍵點(diǎn),將 CI 系統分為四個(gè)進(jìn)階過(guò)程,來(lái)看看你們團隊處在哪個(gè)階段。
在最初的持續集成過(guò)程中,不依賴(lài)獨立的持續集成工具,一般語(yǔ)言的 build 工具基本內置,比如 java 的maven/gradle/ant/ivy,c/c++ 的make /premake,同時(shí)也會(huì )加入代碼風(fēng)格檢查,靜態(tài)代碼分析,單元測試調用,測試覆蓋率檢查等增強功能。接下來(lái)的交付準備環(huán)境、運行測試、備份舊版本、新版本打標簽以及反饋機制等其他重復的事情全由手工完成 ,會(huì )花費很多時(shí)間。
單一的編譯-構建工具逐漸地不能滿(mǎn)足產(chǎn)品快速交付的需求。
整個(gè)開(kāi)發(fā)流程的重心從「代碼級別的集成」轉移到了 更自動(dòng)化地編譯 和 更完美的測試驗證 ,致力于在最短的時(shí)間內發(fā)現問(wèn)題,縮短開(kāi)發(fā)周期,提高軟件質(zhì)量。比較常見(jiàn)的一個(gè)場(chǎng)景,某個(gè)團隊先進(jìn)行代碼 Build,觸發(fā)單元測試、集成測試,打包測試完畢后再自動(dòng)部署到測試環(huán)境,循環(huán)往復,形成編譯 - 構建 - 測試 - 集成 - 部署到測試環(huán)境的集成 Workflow 。
flow.ci 是融入了 workflow 機制的持續集成(CI)服務(wù),也可以理解為自動(dòng)化流程平臺,除了集成代碼、編譯、測試之外,還可以集成常用的工具、靈活自定義流程,幫助你們塑造一個(gè)更優(yōu)秀智能的持續集成系統。
在上個(gè)進(jìn)階中,產(chǎn)品是自動(dòng)部署在測試環(huán)境,手動(dòng)部署在生產(chǎn)環(huán)境。之所以這樣選擇,是因為產(chǎn)品在從需求到部署的過(guò)程中,會(huì )經(jīng)歷若干種不同的環(huán)境,例如 QA 環(huán)境、各種自動(dòng)化測試運行環(huán)境、生產(chǎn)環(huán)境等。這些環(huán)境的搭建、配置、管理,在不同環(huán)境中的具體部署是比較復雜的。經(jīng)常會(huì )遇到這么一種場(chǎng)景:明明在測試環(huán)境已經(jīng)部署成功,但線(xiàn)上環(huán)境又出現部署故障。這種情況很可能是生產(chǎn)環(huán)境和測試環(huán)境的異構造成的。
原文轉自:http://blog.flow.ci/ci_advancedguide/