CI的英文名稱是Continuous Integration,中文翻譯為:持續(xù)集成。
CI中,開發(fā)人員將會頻繁地向主干提交代碼,這些新提交的代碼在最終合并到主干前,需要經(jīng)過編譯和自動化測試流進(jìn)行驗(yàn)證。 持續(xù)集成(CI)是在源代碼變更后自動檢測、拉取、構(gòu)建和(在大多數(shù)情況下)進(jìn)行單元測試的過程。持續(xù)集成的目標(biāo)是快速確保開發(fā)人員新提交的變更是好的,并且適合在代碼庫中進(jìn)一步使用。CI的流程執(zhí)行和理論實(shí)踐讓我們可以確定新代碼和原有代碼能否正確地集成在一起。
通俗點(diǎn)講就是:通過持續(xù)集成, 開發(fā)人員能夠在任何時候多次向倉庫提交作品,而不是獨(dú)立地開發(fā)每個功能模塊并在開發(fā)周期結(jié)束時一一提交。這里的一個重要思想就是讓開發(fā)人員更快更、頻繁地做到這一點(diǎn),從而降低集成的開銷。 實(shí)際情況中,開發(fā)人員在集成時經(jīng)常會發(fā)現(xiàn)新代碼和已有代碼存在沖突。 如果集成較早并更加頻繁,那么沖突將更容易解決且執(zhí)行成本更低。當(dāng)然,這里也有一些權(quán)衡,這個流程不提供額外的質(zhì)量保障。 事實(shí)上,許多組織發(fā)現(xiàn)這樣的集成方式開銷更大,因?yàn)樗鼈円蕾嚾斯ご_保新代碼不會引起新的 bug 或者破壞現(xiàn)有代碼。 為了減少集成期間的摩擦,持續(xù)集成依賴于測試套件和自動化測試。 然而,要認(rèn)識到自動化測試和持續(xù)測試是完全不同的這一點(diǎn)很重要。
CI 的目標(biāo)是將集成簡化成一個簡單、易于重復(fù)的日常開發(fā)任務(wù), 這樣有助于降低總體的構(gòu)建成本并在開發(fā)周期的早期發(fā)現(xiàn)缺陷。 要想有效地使用 CI 必須轉(zhuǎn)變開發(fā)團(tuán)隊(duì)的習(xí)慣,要鼓勵頻繁迭代構(gòu)建, 并且在發(fā)現(xiàn) bug 的早期積極解決。