跳至主要內容

什麼是 CI/CD?

CI/CD 是一種軟體開發程序,可讓 IT 團隊頻繁且可靠地提供軟體變更。任何軟體專案通常都有開發人員團隊,該團隊致力於在草稿或僅限開發人員的環境中改進和維護軟體。他們會在開發環境中進行程式碼變更,然後將最終版本移至生產環境,使用者可以在其中存取更新。此程序包含多個步驟,從程式碼建置和編譯到測試、封裝相依性和版本控制。

 CI/CD 指示透過此軟體變更過程採用自動化,從而持續向最終使用者提供應用程式更新。它可簡化軟體交付工作流程,以降低複雜性並大規模提高效率。某些團隊可能每天交付多次變更,確保使用者體驗到持續改進的軟體應用程式。

CI/CD 具有哪些優勢?

CI/CD 實作為組織帶來下列價值。

加速功能發佈

持續交付可讓您的團隊加速推進實作軟體功能發佈的工作,從而取得競爭優勢。傳統上,軟體團隊需要數週或數月的時間才能推出更新,原因在於他們各自處理變更。此外,一些變更很複雜,使用傳統的開發方法需要更多時間進行處理。

藉助 CI/CD 工作流程,開發人員可將軟體修改任務分成更容易管理的較小部分,並將其分佈給到整個團隊中。此外,CI/CD 使軟體開發更加透明且可追蹤,並且可讓您自信地預測並承諾交付里程碑。加速的軟體開發生命週期也會間接使客戶受益,他們現在可以更快地存取更新。

提高軟體品質

推出更頻繁的較小更新可降低潛在軟體錯誤、弱點和其他避開內部測試的問題的風險。當開發人員對程式碼庫進行變更時,CI/CD 管道會自動執行軟體測試,以便開發人員立即識別並修正任何異常。開發人員可以在進行所有變更後執行軟體測試,而不是在過程中測試他們編寫的程式碼並解決問題。

這樣,公司可以致力於提升軟體品質,從而讓使用者更加滿意。即使某些問題在測試階段被忽略,您也可以將變更回復為先前的功能軟體版本。這為開發人員提供充足的時間來解決錯誤,而不會中斷服務可用性。 

增強開發人員體驗

軟體開發人員通常會花時間處理重複或費力的任務,例如偵錯、測試和驗證。這些任務可能會佔用大量時間,而這些時間本來可用來處理更高價值的工作。如果不加以解決,開發人員可能會感到壓力,從而導致倦怠和工作效率下降。

將持續交付整合到軟體開發程序中可減少團隊的工作負載。開發人員使用 CI/CD 工具來自動執行佔用他們大量時間的手動任務。更重要的是,他們花費更少的時間修正可以輕鬆預防的軟體問題。因此,軟體開發團隊的士氣會提高,從而產生更出色的業務成果。

CI/CD 如何運作?

CI/CD 可自動化建置和部署程序,以加速推進應用程式開發週期和軟體更新。該工具透過在透明且可擴展的現代軟體發展實務中實現更快速的意見回饋來彌合開發和營運團隊之間的差距。下面分享 CI/CD 管道的核心元件。

持續整合

持續整合可自動化開發人員在已分享程式碼儲存庫中合併變更的方式。儲存庫由原始程式碼、程式庫、測試指令碼和用於成功建置的其他資源組成。持續整合可讓開發人員更頻繁地交付程式碼,而不會影響品質。

傳統上,開發人員需要等待商定的時間才能在組建伺服器中編譯、建置和測試他們執行的變更。延遲可能會導致開發人員面臨重大挑戰,例如程式碼衝突,這些挑戰會隨著時間推移而變得越來越難以解決。

程式碼衝突是開發人員執行的變更導致應用程式其他部分失敗的事件。當多個開發人員將其程式碼與分享的儲存庫合併時,程式碼衝突的風險就會更嚴重。持續整合可加快程式碼發佈速度,因為開發人員可以同時工作,而不會破壞其他人的程式碼。

持續交付

持續交付可確保在持續整合階段驗證的程式碼準備好進行生產部署。在 CI 階段合併變更後,程式碼會在持續交付階段進行進一步的自動化測試。

從中,開發團隊將自動化多項測試,包括單元、整合、迴歸和 API 可靠性測試。這些測試可幫助開發人員盡早識別問題並重新處理有問題的程式碼。驗證之後,開發人員可自動佈建基礎設施,例如無伺服器資源、雲端伺服器以及應用程式所需執行的其他資源。然後,營運團隊可以在生產環境中手動部署應用程式。

持續部署

持續部署可以透過移除部署階段中的人工干預,進一步推動程式碼自動化。與持續交付一樣,持續部署依賴自動化測試工具來產生高品質的軟體。但是,DevOps 團隊不需要等待營運團隊的核准,而是可以設定核准應用程式的條件,一旦驗證,該應用程式就會部署給最終使用者。 

CI/CD 中有哪些最佳實務?

以下是最佳化 CI/CD 工作流程以實現效率、成本降低和及時軟體交付的方法。

維護單一儲存庫

從單一的分享儲存庫開始。然後,建立每個開發人員的分支或中央儲存庫的副本。  避免建立更多子分支或其他本機副本,以防止混亂和通訊錯誤。每個開發人員在自己的分支上進行和測試變更,然後將這些變更與中央儲存庫合併。

左移應用程式測試

透過將測試左移,使持續測試成為程式碼整合工作流程的一部分。例如,開發人員在編輯程式碼後立即自動執行程式碼品質檢查、靜態程式碼分析和其他測試。為加速軟體發佈程序,我們建議使用測試指令碼。測試指令碼指引執行軟體測試時的自動化 CI/CD 工具。任何在建置前測試失敗的程式碼都會停止管道中的後續程序,直到開發人員修正該錯誤。

進行細小變更

避免在更新中進行大量變更,因為開發人員可能需要更多時間來解決程式碼衝突等問題。相反,請進行細小的增量變更來解決問題,並快速將發佈版本推送給客戶。此外,您可以在不顯著影響使用者體驗的情況下回復細小的變更。

優先考量透明度

向所有開發人員提供已分享原始程式碼儲存庫的存取權,並且追蹤團隊執行的變更。藉助版本控制系統,您可以識別特定的程式碼變更、進行變更的日期以及負責的開發人員。此外,促進開發人員之間的意見回饋和溝通,以便每位開發人員在處理更新時都可達成共識。

在類似生產環境中測試

在生產環境中測試程式碼是不可行的方式,因為它可能面臨中斷業務營運的風險。但是,開發人員可以建立模仿現實情況的測試環境。在受控但現實的條件下測試應用程式可以讓您發現早期測試中未發現的程式碼問題並降低部署風險。 

AWS 如何支援您的 CI/CD 要求?

AWS CodeBuild 是全受管的持續整合服務,可編譯原始碼、執行測試,並產生可部署的套件。如此一來,就不必再佈建、管理和擴展組建伺服器。

AWS CodePipeline 是可擴展的端對端 CI/CD 解決方案,可協助您自動化軟體建置、測試和部署。您可以建模並視覺化完整發佈程序,並讓 AWS CodePipeline 在程式碼發生變更時根據定義的工作流程建置、測試和部署您的應用程式。您可以將合作夥伴工具和自訂工具整合到發佈程序的任何階段中。

Amazon CodeCatalyst 是一項整合式 DevOps 服務,可提供單一位置來使用 CI/CD 工具規劃工作,協同編寫程式碼,以及建置、測試和部署應用程式。您可以:

  • 從現有的語言或工具型專案藍圖建立新專案,以取得包含範例程式碼、建置指令碼、部署動作、虛擬伺服器、無伺服器資源等內容的現成來源儲存庫。
  • 使用 Amazon Q Developer (用於軟體開發的 AI 代理程式),僅需按幾下即可藉助自然語言輸入將問題中的想法轉變為經過全面測試、可合併的應用程式碼。
  • 透過將 AWS 帳戶連線至 Amazon CodeCatalyst 空間,將 AWS 資源與您的專案整合。

在單一工具中實現應用程序生命週期的所有階段和各個方面,您可以快速且自信地交付軟體。

立即建立免費帳戶,開始在 AWS 上使用 CI/CD!