了解如何從頭開始設置 CI/CD 管道
CI/CD 管道實施或持續集成/持續部署是現代 DevOps 環境的支柱。它通過自動化應用程序的構建、測試和部署來彌合開發和運營團隊之間的差距。在此博客中,我們將了解什么是 CI/CD 管道及其工作原理。
在進入 CI/CD 管道之前,讓我們先了解 DevOps。
DevOps 是一種軟件開發方法,涉及在整個開發生命周期中對軟件進行持續開發、持續測試、持續集成、持續部署和持續監控。這是所有頂級公司都采用的開發高質量軟件和縮短開發生命周期的過程,從而提高客戶滿意度,這是每個公司都想要的。
如果不了解 DevOps 的生命周期,您對 DevOps 的理解是不完整的。現在讓我們看看 DevOps 生命周期并探討它與軟件開發階段的關系。
CI 代表持續集成,CD 代表持續交付/持續部署。您可以將其視為類似于軟件開發生命周期的過程。
讓我們看看它是如何工作的。
上面的管道是一個邏輯演示,說明軟件在交付給客戶之前或投入生產之前將如何沿著此生命周期的各個階段移動。
讓我們來看一個 CI/CD 管道的場景。假設您要構建一個 Web 應用程序,該應用程序將部署在實時 Web 服務器上。您將有一組開發人員負責編寫代碼,他們將進一步構建 Web 應用程序?,F在,當開發團隊將此代碼提交到版本控制系統(如 git、svn)時。接下來,它會進入構建階段,這是管道的第一階段,開發人員在此階段輸入他們的代碼,然后代碼再次進入版本控制系統并帶有適當的版本標簽。
假設我們有 Java 代碼,它需要在執行前進行編譯。通過版本控制階段,它再次進入編譯階段。您從存儲庫的各個分支獲得該代碼的所有功能,這些分支合并它們并最終使用編譯器對其進行編譯。這整個過程稱為構建階段。
構建階段結束后,您將進入測試階段。在這個階段,我們有各種各樣的測試。其中之一是單元測試(在其中測試軟件的塊/單元或其完整性測試)。
測試完成后,您將進入部署階段,將其部署到暫存或測試服務器中。在這里,您可以查看代碼,也可以在模擬器中查看應用程序。
成功部署代碼后,您可以運行另一個健全性測試。如果一切都被接受,那么它就可以部署到生產環境中。
同時,在每一步中,如果有錯誤,您可以發郵件給開發團隊,以便他們進行修復。然后他們會將其推送到版本控制系統中,然后返回到管道中。
再一次,如果在測試期間報告了任何錯誤,反饋將再次發送給開發團隊,他們在那里修復它,并在需要時重復該過程。
這個生命周期一直持續到我們獲得可以部署到我們測量和驗證代碼的生產服務器的代碼/產品。
我們現在了解了 CI/CD 管道及其工作原理;現在,我們將繼續了解 Jenkins 是什么以及我們如何使用 Jenkins 部署演示代碼并自動化整個過程。
終極 CI 工具及其在 CI/CD 管道中的重要性
我們的任務是自動化整個過程,從開發團隊給我們代碼并提交代碼到我們將其投入生產。我們將自動化管道,以便在 DevOps/自動化模式下實現整個軟件開發生命周期。為此,我們需要自動化工具。
Jenkins為我們提供了各種接口和工具,以便將整個過程自動化。
我們有一個 Git 存儲庫,開發團隊將在其中提交代碼。然后,Jenkins 從那里接管,這是一個前端工具,您可以在其中定義整個工作或任務。我們的工作是確保該特定工具或特定應用程序的持續集成和交付過程。
Jenkins 從 Git 中提取代碼,然后 Jenkins 將其移至提交階段,代碼從每個分支提交。構建 階段是我們編譯代碼的地方。如果是Java代碼,我們在Jenkins中使用maven等工具,然后編譯該代碼,可以部署運行一系列測試。這些測試用例再次由 Jenkins 監督。
然后,它移動到登臺服務器以使用Docker進行部署。經過一系列單元測試或健全性測試后,它會進入生產階段。
Docker就像一個虛擬環境,我們可以在其中創建服務器。創建整個服務器并部署我們要測試的工件需要幾秒鐘。但是這里出現了問題:
我們為什么要使用 Docker?
正如我們之前所說,您可以在幾秒鐘內運行整個集群。我們有一個圖像存儲注冊表,您可以在其中構建圖像并永久存儲它。您可以在任何可以自我復制的環境中隨時使用它。
動手實踐:使用 Docker 和 Jenkins 構建 CI/CD 管道
第 1 步:在 VM 中打開終端。使用這些命令啟動 Jenkins 和 Docker:
systemctl start jenkins
systemctl enable jenkins
systemctl start docker
注意:sudo如果顯示“權限錯誤”,請在命令前使用 。
第 2 步:在您指定的端口上打開 Jenkins。單擊 “新建項目” 以創建作業。
第 3 步:選擇一個 自由式項目并提供項目名稱(這里我給出了 Job1),然后單擊“確定”。
第 4 步:選擇源代碼管理并提供Git存儲庫。單擊“應用并保存”按鈕。
第 5 步:然后點擊 Build->Select Execute Shell。
第 6 步:提供 shell 命令。在這里,它將構建存檔文件以獲取 war 文件。之后,它將獲取已經拉取的代碼,然后使用 maven 安裝包。它只是安裝依賴項并編譯應用程序。
第 7 步:通過單擊“新建項目”創建新 作業。
第 8 步:選擇 自由式項目并提供項目名稱(這里我給出了 Job2),然后單擊確定。
第 9 步:選擇源代碼管理并提供Git存儲庫。單擊“應用并保存”按鈕。
第 10 步:然后點擊 Build->Select Execute Shell。
第 11 步:提供 shell 命令。在這里它將開始集成階段并 構建Docker 容器。
第 12 步:通過單擊“新建項目”創建新 作業。
第 13 步:選擇 自由式項目并提供項目名稱(這里我給出了 Job3),然后單擊確定。
第 14 步:選擇源代碼管理并提供Git存儲庫。單擊“應用并保存”按鈕。
第 15 步:然后點擊 Build->Select Execute Shell。
第 16 步:提供 shell 命令。在這里它將檢查 Docker 容器文件,然后將其部署到端口號 8180。單擊“保存”按鈕。
第 17 步:現在點擊 Job1 -> Configure。
第 18 步:點擊 Post-build Actions -> Build other projects。
第 19 步:提供要在 Job1(這里是 Job2)之后構建的項目名稱,然后單擊 Save。
第 20 步: 現在點擊 Job2 -> Configure。
第 21 步:點擊 Post-build Actions -> Build other projects。
第 22 步:提供要在 Job2(這里是 Job3)之后構建的項目名稱,然后單擊 Save。
第 23 步:現在我們將創建一個管道視圖。單擊“+”號。
第 24 步:選擇 Build Pipeline View并提供視圖名稱(這里我提供了 CI CD Pipeline)。
第 25 步:選擇initialJob(這里我提供了 Job1)并單擊 OK。
第 26 步:單擊 “運行” 按鈕以啟動 CI/CD 過程。
第 27 步:成功構建后打開localhost:8180/sample.text。它將運行該應用程序。
到目前為止,我們已經學習了如何使用 Docker 和 Jenkins 創建CI/CD 管道。DevOps 的目的是更快、更可靠地創建質量更好的軟件,同時促進團隊之間的溝通和協作。