90%的開發都沒搞懂的CI和CD!

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據IDC統計,2017年,DevOps的全球軟件市場已達到約39億美元的水平,預計到2022年市場將達到80億美元左右!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在敏捷軟件開發環境中,工作模型和操作需要對公司不斷變化的需求具有超級靈活的能力。DevOps——一種工具和實踐的結合,有助於軟件開發與IT運維並攜手共進。這種跨功能的工作模式旨在最小化系統開發生命週期的持續時間,並提供持續的部署和交付。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"實施CI和CD的方式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你可能有很多想法,你的產品創意可能是最好的,但如果你不經常交付新版本,那麼你將很難與周邊的競爭對手匹敵。持續集成(CI)和持續交付與部署(CD)是對代碼的所有主要和次要更改集成到一起並一同交付,或者添加新功能或產品,甚至可以是Bug修復。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些代碼更改始終保持可部署狀態,並自動發佈到預生產環境中。通常情況下,這種情況會在一天內至少發生一次或多次。這種實踐將鼓勵頻繁地提交小的更改,而不是不頻繁地提交大的更改。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD管道的滲透性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CI/CD管道是將軟件應用程序交付給客戶或客戶端的一種途徑。這個過程要經過持續的集成,即添加代碼更改或修改現有代碼、自動測試階段、交付更改,以及隨後部署到登臺環境中。它自動化了軟件開發中涉及的所有步驟。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD管道中的各個階段"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"源代碼/提交階段"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這一階段主要是增加新的功能,或者是對現有的工作模式進行一些小的修改,以便更有效地工作以滿足客戶的需求。管道在這裏由源代碼存儲庫觸發。代碼中的任何更改都會觸發通知。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"構建階段"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"編譯源代碼,系統在構建階段運行單元測試。一旦單元測試通過,集成測試就完成了。這個階段出現的所有問題都必須立即解決。Docker工具用於創建服務器並將數據移動到註冊表中,以便爲下一個測試階段做好準備。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"測試階段"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自動測試在這個階段進行,以確保整個軟件中沒有Bug,同時也檢查軟件是否滿足預期功能。這些測試從最終用戶的角度進行,以驗證代碼的質量。測試階段的失敗表明代碼的不準確,這會導致開發人員返工,測試循環繼續進行。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"部署階段"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一旦軟件通過測試階段,可執行程序就可以部署到生產環境中了。在將它們直接推送到生產環境之前,最好有一個內部工作就像生產工具一樣的登臺環境。登臺環境充當額外的測試和評審。一旦它通過測試和審查不存在Bug,程序被部署到生產中。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD管道優點一覽表"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"構建任何軟件的主要目的都是爲問題提供健壯的解決方案。軟件必須是準確的,最小化所涉及的風險,並且應該儘快交付給客戶。CI/CD管道有助於構建這種健壯而準確的軟件。如果一個公司適應了敏捷方法中的CI/CD管道,那麼它可以得到以下好處:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●通過單元測試和功能測試,在每次迭代中檢測到不準確的代碼和不一致的結構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●故障檢測和修復率的提高導致新發布日的增加。這將有助於產品團隊將更多精力集中在客戶對產品工作的新需求上。對發佈的功能進行快速反饋是爲了達到這個目的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●通過質量和壓力測試來測試產品的耐用性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●CI/CD管道中的代碼更改相對較小,這是通過以更快的速度集成代碼片段來實現的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●當代碼錯誤出現時,通過分離代碼錯誤,代碼更改更小,平均解決時間越短。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD管道對開發和運維的重要性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在軟件革命的新時代,開發人員和運維人員一起工作。這種情況下,兩者的目標往往是相對獨立且明確的,會導致環境中的混亂。開發人員和運維人員通過一組正式稱爲“DevOps”的工具和實踐進行結合。CI/CD管道是DevOps實踐和工具的支柱。DevOps遵循持續集成、持續交付的原則,並通過自動化測試進行開發。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"高速度"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在其工作模型中包含CI/CD管道的軟件應用程序通過不斷的反饋活動對代碼中的更改或新特性的添加做出更快的響應。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"效率提高"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着響應變得更快,新的代碼更改將有效地實現到應用程序中,從而提高了生產率。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"開發週期較短的高質量軟件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於CI/CD流水線中的每個過程都可自動化,使得軟件開發的生命週期縮短。雖然生命週期較短,但通過不斷反饋和定期實施修訂的程序,仍可對質量保持密切監督。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"可靠性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CI/CD管道始終是可靠的,在運行時不會反彈。當運行時由於多個失敗而受阻時,開發人員會感到沮喪。由於在CI/CD管道中有恆定的反饋和故障分離,使得軟件更加可靠和易於使用。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"降低測試成本"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於測試是自動化的,管道可以在幾秒鐘內處理數百個測試,並提供可靠的輸出。在傳統的軟件開發模型中,成百上千的測試花費了大量的成本。在DevOps中,測試成本不高,而且運行速度非常快。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/00/00fe7432f01198275cdcf9d96fd596e6.jpeg","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"http://https/www.zentao.net/","title":null},"content":[{"type":"text","text":"禪道"}]},{"type":"text","text":"對DevOps和持續集成的支持,包括Git、Subversion版本系統集成,Jenkins構建任務觸發,以及ZTF自動化測試調度幾個方面。通過禪道自研的"},{"type":"link","attrs":{"href":"https://ztf.im/","title":null},"content":[{"type":"text","text":"ZTF自動化測試工具"}]},{"type":"text","text":",可很好地驅動8種單元測試框架、3種自動化測試框架來執行測試,並把最終結果回傳給禪道,進行統一的報告展示。禪道ZTF打通了項目管理和持續集成工具之間的溝壑,貫穿持續集成、持續測試、持續部署等DevOps生命週期的不同階段。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"禪道,爲您提供專業的DevOps解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章