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