持續(xù)集成(CI)是一種軟件工程實(shí)踐,其中頻繁且獨(dú)立的更改會(huì)在添加到較大的代碼庫中時(shí)立即進(jìn)行測(cè)試并報(bào)告。 CI旨在提供快速反饋,以便在將缺陷引入代碼庫時(shí),盡快對(duì)其進(jìn)行識(shí)別和糾正。 CI起源于 極限編程 范式,它是敏捷方法的子集,但原理可以應(yīng)用于任何迭代編程模型。傳統(tǒng)的開發(fā)方法(例如 瀑布模型) 也可以在構(gòu)建階段受益于CI方法的使用。持續(xù)集成通常與持續(xù)交付配合使用,對(duì)于CI / CD,將可執(zhí)行代碼交付生產(chǎn)的步驟迅速且自動(dòng)化。 根據(jù)持續(xù)集成:提高軟件質(zhì)量和降低風(fēng)險(xiǎn)的合著者Paul Duvall所說 ,CI的最佳實(shí)踐包括:
CI的發(fā)布可能以任意頻率發(fā)生,這取決于運(yùn)行它的組織和手頭的項(xiàng)目。通常,采用CI的組織比以前的軟件開發(fā)過程更頻繁地發(fā)布。每個(gè)重大更改都會(huì)啟動(dòng)構(gòu)建。開發(fā)團(tuán)隊(duì)采用CI的原因很多,其中包括不斷收到有關(guān)軟件狀態(tài)的反饋。CI在開發(fā)的早期就發(fā)現(xiàn)了缺陷,與軟件開發(fā)生命周期的后期相比,它使破壞性更小,更簡(jiǎn)單,更容易解決。 開發(fā)團(tuán)隊(duì)可以在CI設(shè)置中使用自動(dòng)化功能來整合代碼集成和測(cè)試,與手動(dòng)執(zhí)行這些任務(wù)相比,它可以減少查找錯(cuò)誤的時(shí)間并提供更快的反饋。自動(dòng)化工具可幫助團(tuán)隊(duì)在CI流程中執(zhí)行常規(guī)測(cè)試,例如單元測(cè)試,應(yīng)用程序編程接口(API)和功能測(cè)試。單元測(cè)試檢查最小的應(yīng)用程序組件。API測(cè)試評(píng)估API是否可以在其預(yù)期的請(qǐng)求和響應(yīng)負(fù)載下可靠地執(zhí)行。功能測(cè)試通常會(huì)評(píng)估較大部分的源代碼,以模擬用戶工作流程或功能。借助完全的CI自動(dòng)化,腳本或集成引擎可以通過測(cè)試和構(gòu)建來管理新代碼的移動(dòng)。 這種自動(dòng)化方法通常是CI / CD管道和DevOps方法的組成部分。CD充當(dāng)CI的擴(kuò)展,而不是替代。CI專注于開發(fā)周期的構(gòu)建和代碼測(cè)試部分,而CD包括部署測(cè)試和配置自動(dòng)化。在CD中,開發(fā)團(tuán)隊(duì)可以在短周期內(nèi)生產(chǎn)和發(fā)布軟件。持續(xù)部署是一個(gè)更高級(jí)的步驟,其中代碼自動(dòng)發(fā)布到生產(chǎn)環(huán)境中,供最終用戶使用。 將CI納入開發(fā)流程時(shí),開發(fā)團(tuán)隊(duì)可以為組織帶來有價(jià)值的收益。 與一次瀑布之類的其他開發(fā)方法相比,與一次集成更少的代碼相比,CI可以更短,更少破壞性的代碼集成。同樣,還原的變更具有較小的破壞性,因?yàn)閮H隔離的變更會(huì)立即消失。 錯(cuò)誤檢測(cè)也更容易,更快捷,因?yàn)槿绻霈F(xiàn)錯(cuò)誤,則很可能在最后一批集成代碼中。隨著開發(fā)人員不斷添加代碼庫,這兩個(gè)好處都是提高代碼可見性的結(jié)果。 持續(xù)集成還可實(shí)現(xiàn)對(duì)變更的持續(xù)反饋,從而可以隨著時(shí)間的推移改進(jìn)產(chǎn)品。 開發(fā)團(tuán)隊(duì)使用CI軟件工具來自動(dòng)化部分應(yīng)用程序構(gòu)建并構(gòu)建文檔跟蹤。以下是企業(yè)IT商店中常見的CI管道自動(dòng)化工具的示例。CI管道中存在許多其他工具,例如版本控制,測(cè)試,構(gòu)建和工件存儲(chǔ),這些工具太多了,在此不再贅述。 Jenkins是一個(gè)開源CI自動(dòng)化服務(wù)器。詹金斯(Jenkins)可以分發(fā)測(cè)試并在眾多機(jī)器上進(jìn)行構(gòu)建。插件擴(kuò)展了Jenkins的功能,例如用于自動(dòng)化單元測(cè)試和測(cè)試報(bào)告的功能。開發(fā)人員可以通過特定的URL,在版本控制系統(tǒng)中或預(yù)先計(jì)劃的順序系統(tǒng)中進(jìn)行提交來創(chuàng)建項(xiàng)目構(gòu)建。一旦測(cè)試了系統(tǒng),Jenkins還支持使用CD部署代碼的功能。CloudBees 支持在企業(yè)級(jí)使用Jenkins。 開源GitLab存儲(chǔ)庫和平臺(tái)支持CI / CD。GitLab可以在多臺(tái)機(jī)器上運(yùn)行單元和集成測(cè)試,并且可以拆分構(gòu)建以在多臺(tái)機(jī)器上工作,以減少項(xiàng)目執(zhí)行時(shí)間。該軟件還支持將CD手動(dòng)部署到登臺(tái)環(huán)境和生產(chǎn)環(huán)境。GitLab還支持與Atlassian Jira,GitHub和Jenkins之類的工具集成。 JetBrains TeamCity是用于CI / CD的集成和管理服務(wù)器。利用TeamCity,開發(fā)人員可以在將更改提交到代碼庫之前測(cè)試代碼。如果測(cè)試失敗,TeamCity將發(fā)送通知。TeamCity具有Build Grids,使開發(fā)人員可以針對(duì)不同的平臺(tái)和環(huán)境運(yùn)行多個(gè)測(cè)試和構(gòu)建。TeamCity包括對(duì)Docker,Jira和其他程序的支持。 |
|