介紹

CI/CD 定義

CI/CD 的概念

CI/CD 管道解釋

CI/CD 工作流程

CI/CD 實施的好處

CI/CD 和 DevOps

結論


介紹

在快速生產高品質軟體時,持續整合、交付和部署的管道非常有用。基本上,CI/CD 的自動化可以幫助您更快、更安全地建立更好的程式碼。在本文中,我將描述 CI/CD 的含義、CI/CD 管道工作流程、優點、如何實現良好的 CI/CD 管道以及 CI/CD 如何融入 DevOps 領域。

CI/CD 定義

CI/CD 是持續整合、持續交付和持續部署的縮寫,它們是有助於優化軟體開發流程的現代開發技術。 CI/CD 流程涉及自動將多個開發人員的程式碼更新整合到單一程式碼庫中。

使用 CI/CD,團隊可以更頻繁、更一致地提供程式碼更新,並更早發現錯誤。因此,借助 CI/CD,編碼、測試和開發過程得到了簡化。

CI/CD 的概念

  • 持續整合:在這種實踐中,開發人員將定期將程式碼變更提交到公共/共用儲存庫,作為 CI 開發方法的一部分。每次提交時,都會觸發自動建置過程,然後在一系列自動化測試中編譯和執行程式碼,以儘早發現任何錯誤。
Each commit creates an automated workflow on a CI server and the CI server notifies developers of any issues in their code.
A benefit to continuous integration is that since developers get input right away, they can fix any problems that come up immediately which helps to reduce the likelihood of code conflict.
When validating your code quality in the CI process, a static code analysis helps confirm your code’s quality, and when the static tests are passed, automated CI procedures help compile the code for additional testing.
Once a build passes the early static testing, it is prepared to go to more thorough testing, and the continuous integration (CI) comes to an end. If the build fails testing, the build/test cycle can be repeated until a successful build is achieved. Therefore, a continuous integration pipeline may perform code reviews, run unit tests, run builds automatically, and configure the CI pipeline to be activated whenever there is a commit/merge in your codebase.
Also, CI procedures typically have a version control system that helps monitor changes. So popular CI tools like [Jenkins](https://www.jenkins.io/) and [GitlabCI](https://docs.gitlab.com/ee/ci/) can be integrated with version control systems like [Git](https://git-scm.com/) to automate the CI process.
The Continuous Integration Process:

持續整合過程

  • 持續交付:在持續交付過程中,您的程式碼會自動發佈到預生產環境,您可以在正式部署之前親自測試您的程式碼並對其進行驗證。在此過程中,將編譯儲存庫中的程式碼並建立並測試建置。然後,軟體準備就緒,以便在準備就緒時自動發布。
This process helps to prevent post-production surprises by running a series of tests like load testing, UI testing, and so on which is useful in resolving defects beforehand.
Continuous delivery works together with continuous integration to automate the release process of your application.
The Continuous Delivery Process:

持續交付流程

  • 持續部署:在這裡,透過自動化測試的程式碼變更會自動推送到生產環境,無需人工/手動互動。
At this stage, after the DevOps teams establish the requirements for code releases, the code is then released into the production environment once those requirements have been satisfied.
The continuous deployment process is entirely automated.
The entire process of continuous integration, delivery, and deployment helps businesses provide new services rapidly. For example, Amazon is constantly deploying and deploys more than 125k times daily, and according to the [2024 State of DevOps Report](https://cloud.google.com/resources/devops/state-of-devops), powerful companies with high-performing teams have the capacity to deploy multiple times daily.
The continuous deployment process:

持續部署流程

CI/CD 管道解釋

將軟體從程式碼提交轉移到最終生產部署的自動化過程稱為 CI/CD 管道。這些管道是 CI/CD 流程的基礎,有助於自動協調軟體開發、測試和部署流程。

就是上面所描述的持續整合、持續交付、持續部署的自動化DevOps工作流程。

CI/CD 工作流程

典型的 ci/cd 工作流程

CI/CD 管道包含一系列構成 CI/CD 工作流程的步驟/階段。這些階段包括:

  • 來源:這是 CI/CD 管道流程的第一階段,涉及原始程式碼的建立。在這裡,可以使用GitBitbucket等版本控制系統來管理原始碼變更。當對程式碼進行變更並推送到儲存庫時,將觸發 CI/CD 管道進入「建置」階段。

  • 建置:這裡從儲存庫中提取原始程式碼,並建立編譯後的可執行/可執行工件(EXE 檔案)。根據專案的階段,建置頻率可能是每天甚至每天多次。該程式碼與依賴項和庫相結合以建立可以部署的建置。

  • 測試:執行整合測試、功能測試、回歸測試和單元測試等一系列自動化測試來驗證您的程式碼、解決任何問題並確保您的應用程式的行為符合預期。這是管道中較長的階段之一,因為執行一系列測試可能需要大量時間。

The form of testing depends on the particular project requirements.
If mistakes are found during testing, the developers are notified so they can examine the results and fix them in later releases.
  • 部署:您的程式碼通過所有必要的測試後,就可以進行部署。測試後的程式碼可以部署到臨時或生產環境/伺服器。在持續交付中,程式碼被上傳到儲存庫,並在人工批准後部署或投入生產。然而,在持續部署中,這個階段是自動化的。
Tool Options:

ci/cd 管道工具選項

CI/CD 實施的好處

  • CI/CD 可以幫助您自動化原本由開發人員手動完成的事情。

  • CI/CD 透過確保所有配置在所有環境中都被利用來確保一致性,並降低測試和生產設定之間出現差異的可能性。

  • 它們使開發團隊能夠一致地發布新功能,從而幫助縮短程式碼提交到生產的時間。這有助於促進高效的軟體開發。這也有助於釋放開發人員的時間,因為它是一個自動化過程。

  • CI/CD 透過消除重複過程中的人機互動需求來降低人為錯誤的可能性。透過這種方式,它可以在小問題發展成重大災難之前檢測到它們,從而提高程式碼品質。

  • CI/CD 管道允許開發人員嘗試創造性或非常規的編碼技術,與原始/手動軟體開發流程相比,風險顯著降低。

  • 它可以幫助開發人員比手動完成更有效地協作。

  • 由於交貨速度快,它們也有助於提高公司的競爭優勢。如前所述,亞馬遜是世界上最大的公司之一,每天都會進行多次持續部署。

CI/CD 和 DevOps

CI/CD 和 DevOps

DevOps 是「開發營運」的縮寫,是「開發」和「營運」兩種實踐的組合,它本質上是一組以頻繁的小步驟或迭代來建置、測試和發布程式碼的實踐。

「開發」與準備原始碼有關,而「操作」與將原始碼部署到特定環境有關。 DevOps 管道的基礎是 CI/CD,它提供應用程式的持續開發、整合、測試和交付所需的自動化和可靠性。

DevOps 的核心實踐之一是 CI/CD。

DevOps 管道的典型步驟首先透過定義應用程式的功能和內容來規劃應用程式,然後實際為應用程式編寫程式碼,然後透過持續整合、交付和部署實現 CI/CD。之後,您可以監控您的應用程式並接收用戶回饋,這對將來的版本有所幫助。

CI/CD 是 DevOps 框架的基本實踐之一。

因此,CI/CD 非常符合 DevOp 的目標,即透過可靠軟體發布的自動化來幫助縮小開發 (Dev) 和營運 (Ops) 之間的差距,從而增強團隊合作、產品生產力和品質。

結論

應用程式的生命週期可以透過實施良好的 CI/CD 管道來改變。因此,如果您想更快地開發高品質的軟體,您應該利用本文中給出的技巧。遵守 CI/CD 最佳實踐並選擇最適合您的工具將幫助您改進管道並優化性能。


原文出處:https://dev.to/debtech/a-comprehensive-introduction-to-cicd-pipelines-4ijc


共有 0 則留言