持續整合和持續部署

已完成

在變更或部署公司的基礎結構之前,請先探索持續整合 (CI) 和持續傳遞或部署 (CD) 背後的概念,以瞭解您計劃建置的專案。 在本單元中,您將瞭解 CI/CD 管線,以及如何使用 GitHub Actions 套用 CI 和 CD。

CI 和 CD 是一種作業作法,會將持續自動化和監視引入軟體開發、測試和部署的所有階段。 開發人員小組使用 CI 和 CD 來提高生產力,並協助減少將新程式代碼整合到現有程式代碼基底時可能發生的問題。

持續整合

在開發 CI/CD 工具之前,整個開發-test-deploy-test 程式是手動的。 自動化測試套件可供使用,但必須手動或由專家小組排程執行。

軟體開發人員面臨的最重大挑戰之一是 合併日。 合併日發生,因為大部分的軟體開發小組都處理不同原始檔控制分支中的相同程序代碼,且測試最少。 在合併當天,所有程式代碼變更都會整合回main分支。 因此,一整天都必須致力於解決整合問題,因為小組成員的分支在主要分支中合併和交集。

關鍵 CI 原則是盡可能將所有新的變更合併回主要分支。 持續合併變更有助於避免許多開發人員一次合併變更時發生的合併日「整合地獄」。

CI 要求小組經常實作並整合程序代碼中的最小變更。 實作 CI 表示小組可以持續測試、編譯、部署,然後在生產環境中再次測試。 CI 的目標是在程式碼變更會影響主要程式碼分支或部署到客戶之前,先偵測並避免程式代碼變更所造成的生產問題。

持續傳遞和部署

持續傳遞 會挑選 CI 結束的位置,並將傳遞程式自動化至選取的基礎結構環境。 您可以使用持續傳遞來快速且持續地釋放變更。 使用持續傳遞之後,您可以事先決定每天、每周、每月或另一個符合業務需求的排程來部署變更。

持續部署 會更進一步地自動釋放將 CI/CD 管線的所有階段傳遞至生產階段的變更。 持續部署是軟體開發中最先進的程式之一,而且需要程式代碼測試應用程式功能的所有層面,而不需要人為介入。

CI/CD 管線

管線包含在發生指定事件時執行的集體進程。 大量的事件是軟體開發的一部分,CI/CD 管線必須支援所有相關事件。 當事件觸發管線時,會觸發此事件的所有接聽程式,並啟動進程的第一個階段。

CI/CD 管線會在新的程式碼變更觸發時執行。 在大部分情況下,此程序會從複製或下載原始程式碼開始。 接著,下一個步驟會觸發等等。

每次程式代碼變更觸發 CI/CD 執行時,管線中的所有步驟都會執行。 如果步驟中有錯誤,管線就會停止。 工作流程可以包含邏輯跳躍,讓某些階段在特定條件下不會執行,但整體管線會繼續執行。

GitHub 動作

GitHub Actions 支援所有 GitHub 相關事件,並將本課程模組中的 CI/CD 管線自動化。 在 GitHub Actions 中,每個步驟都會在 JavaScript 中或使用 Docker 容器來定義動作。 動作很容易建立,並形成管線步驟的建置組塊。

您可以使用 GitHub Actions,將所有 GitHub 裝載的程式代碼與自動化工作流程緊密整合。 工作流程會處理多個工作,以跨數個環境整合程序代碼。

GitHub Actions 是 CI/CD 管線的熱門提供者,因為它的開放原始碼模型。 因為工作流程是開放原始碼,所以會儲存在平臺上任何人可用的存放庫中。 GitHub 使用者可以使用彼此的動作,或建立自己的自定義動作,而不需安裝或設定任何其他動作。

在使用者之間共用動作的能力表示您不需要重寫重複的程式代碼或階段,但可以使用或自定義現有的動作。 在下一個單元中,您會在 Docker 容器中使用 GitHub Actions 來定義 CI/CD 管線,以實作應用程式的持續部署。

檢定您的知識

1.

CI 與 CD 之間有何差異?

2.

什麼是 CI 管線?