在最好的時候建立用戶喜歡的高質量應用程序並非件容易的事情。更況且,要怎樣作才能更快地建立用戶喜歡的高質量應用程序而且可以不斷改進它們呢?這就是須要引入持續集成和持續交付(CI / CD)的地方。web
那麼,持續集成(CI)到底是什麼呢?它是軟件工程師天天頻繁地將更新代碼的副本傳遞到共享位置的過程。全部的開發工做都在預約的時間或事件中進行集成,而後自動測試和構建工做。經過CI,開發過程當中出現的錯誤能被及時發現,這樣不只加速了整個開發週期,並且使軟件工程師的工做效率更高。promise
咱們不能低估CI的好處。由於團隊裏的人都在同一個產品上進行實時工做,因此在軟件開發過程當中使用CI時,你能夠指望實現更快的速度、更好的穩定性和更強的可靠性。而且在開發過程的早期,開發人員可以發現和解決任何編碼問題,使它們在成爲下游主要問題以前獲得糾正。這樣能夠下降錯誤代碼致使的長期開發(和業務)的成本。安全
持續集成對於QA測試花費的時間也有很大的影響。經過CI,開發人員不斷審查和編輯之前的代碼,可以檢查到許多小的錯誤,這些錯誤在QA裏一般發現的晚一些。這使得測試人員不只能夠專一研究代碼和關注更加緊迫的問題,並且可以同時測試更多的場景。服務器
對開發團隊來講,使用CI的另外一個好處是能夠提升編碼能力。因爲持續發展的天然靈活性,這使得開發人員可以快速、輕鬆地對代碼進行更改,卻不會產生運行迴歸風險。運維
持續交付(CD)是建立高質量應用程序的第二個難題。CD是一門軟件開發學科,利用技術和工具快速地交付生產階段的代碼。因爲大部分交付週期都是自動化的,因此這些交付可以快速地完成。工具
實施持續交付的主要好處是可以加快應用程序的上市時間。使用CD的公司能大大增長他們的應用程序發行頻率。在沒有使用CD以前,應用程序發佈的頻率一般是幾個月一次。然而如今使用CD,你能夠一個星期發佈一次、甚至天天發佈屢次應用。在競爭激烈的行業中,速度的提升將會使你處於主要優點。單元測試
持續不斷的軟件版本發佈也會根據用戶對應用程序的反饋,容許開發團隊對其進行微調。這個用戶反饋爲開發人員提供了所須要的洞察力,而且它優先考慮了用戶實際須要的功能請求。一樣重要的是,對用戶實際上沒有用到的應用程序功能,它容許開發人員對其進行優先級排序。測試
CD的另外一個好處是它能保證每一個發行版本的風險較低。當使用CD方法發佈時,開發團隊也會更有信心,由於在整個開發生命週期中,全部內容都通過了屢次測試。編碼
任何不考慮轉向CI / CD的公司都或將被那些使用CI / CD方法的競爭對手遠遠地甩在後面。那麼,如何轉向CI / CD?當您準備轉向持續集成/持續交付(CI / CD)時,須要考量及決定的相關流程有不少。下文將帶您瞭解這些主要流程。版本控制
你須要組織及考慮的一個主要流程就是你的分支和合並。分支就是開發人員能夠在代碼的平行部分工做的地方——從一箇中央代碼庫分支出來。分支的好處在於,它容許在不破壞中心代碼基礎的狀況下,在軟件構建的不一樣方面同時進行工做。顯然,合併即意味着分支合併到核心代碼庫。
經過各類版本控制系統,許多開發人員對分支和合並已經很熟悉了。然而,根據您的構建的特別要求,您所分支的內容也有不少不一樣的策略。有些開發人員將經過維護、功能或團隊來進行發佈的分支。
您可能會對某種策略很是狂熱,但「絕對正確」的分支和合並策略是不存在的,只存在「對您的構建而言正確」的方式與策略。這須要檢查您當前的分支和合並策略,並根據您的目標和狀況決定須要更改哪些內容。
構建自動化意味着您能夠自動編譯軟件構建。持續集成服務器的核心是構建自動化服務器,其工做是在觸發或定時的基礎上編譯和連接源代碼。您選擇的持續集成服務器將成爲您的CI/CD環境的支柱。
在查看構建自動化過程時,瞭解市場上各類可用選項的功能是很是有幫助的。開源公司Jenkins如今在CI/CD部署中佔絕對優點,這一般是一個好的開始。或者至少,在比較其餘解決方案時把它做爲基準。做爲一個開源代碼系統,您可能仍需構建一些實用程序,以使構建自動化徹底適合您的狀況。
測試自動化對於CI/CD可否按預期工做相當重要。若是沒有自動化測試,CI/CD將很快沒法實現快速交付的目標。咱們的整體建議是儘量自動化。這意味着您須要檢查您須要執行的各類測試,並決定在您的環境中能夠安全地自動進行哪些測試。
創建測試自動化環境可能須要新的技能。然而,這是戰略需求,將會提升交付速度,減小錯誤。至少,您應該自動化代碼審查、單元測試、集成測試和系統測試。
關於持續交付和持續部署之間的區別,仍然存在一些混淆。簡而言之,持續交付意味着持續推出發佈就緒代碼,而持續部署則意味着持續給用戶部署該軟件。
不管你在看什麼「CD」,對那些不習慣的人來講,這彷佛是一個巨大的飛躍。爲了讓您的組織有信心將軟件部署到最終用戶,須要一個嚴密的測試自動化基礎設施。
咱們的建議是,最好進入流程定義,以實現零接觸持續部署的整體目標。雖然領先的持續集成系統一般會考慮本身的持續交付系統,但您能夠比現成的參數更進一步。真正的敏捷性須要構建一個基礎設施、寫好代碼,吸引用戶使用。
真正實現CI/CD並不是易事,pipeline搭建工做複雜,平滑升級難以保障,服務宕機難以免……選擇一個完整的CI/CD工具,將大大助力於CI/CD在企業裏落地並最終帶來生產運維效率的提高。Rancher Labs新近發佈的CI/CD工具Rancher Pipeline,就擁有極簡的操做體驗,強大的功能整合,而且徹底開源。
拓展閱讀:Rancher Pipeline發佈
英文原文: https://www.infostretch.com/blog/the-promise-of-continuous-integration-and-continuous-delivery/ https://www.infostretch.com/blog/the-processes-to-nail-in-your-move-to-cicd/