如何使用GitLab進行任務的同步執行(第一部分)

讓我們來談談GitLab

基於Git的知名分散式版本控制系統,GitLab這個網頁式DevOps平台提供了一整套工具,涵蓋軟體開發、版本控制、持續整合與交付(CI/CD)以及溝通。GitLab使團隊能夠高效地管理其軟體開發項目,追蹤變更並在代碼上進行溝通。它提供了項目管理工具以及代碼倉庫、問題追蹤、代碼審查、持續整合和部署等功能。

GitLab的主要特點

  1. GitLab的版本控制系統以Git為基礎,使開發者能夠高效地追蹤變更、創建分支和管理合併。
  2. GitLab提供了一個集中的倉庫管理系統,使程序員能夠有效地存儲、整理和管理他們的代碼庫。
  3. 問題追蹤:利用GitLab內建的問題追蹤系統,團隊可以創建和追蹤問題,將其分配給團隊成員,並追蹤其進度。
  4. GitLab提供了一個強大的CI/CD管道,可自動化構建、測試和部署流程。它允許團隊即時合併代碼變更、執行自動化測試並部署應用程式。
  5. 協作工具如程式碼審查、評論及線上對話,使團隊成員間的合作與對程式碼變更的意見回饋更為便捷。
  6. GitLab 提供專案管理工具,如里程碑、看板、Kanban及敏捷看板,讓團隊能有效規劃並追蹤專案進度。
  7. 安全與存取控制:為確保程式碼完整性並防範潛在安全風險,GitLab 提供多種安全功能,如基於角色的存取控制、合併請求批准及漏洞管理。

圖1 GitLab CI/CD – 管線架構

GitLab 提供多種版本,從免費社群版到功能更豐富、支援選擇更多的付費版。可透過 GitLab.com 使用雲端服務,或自行於本地部署。

GitLab 持續整合與持續交付(CI/CD)

GitLab CI/CD 是 GitLab 提供的強大持續整合與持續交付平台,GitLab 是一個基於網路的 Git 儲存庫管理工具。團隊可利用一系列管線自動化軟體開發生命週期的每一步,從程式碼提交到部署。

以下概述 GitLab CI/CD 流程:

  • GitLab 配置:開始前,需建立 GitLab 儲存庫並進行設定。可選擇自行架設 GitLab 實例或使用雲端託管版本。
  • .gitlab-ci.yml: GitLab CI/CD的核心機制包含在.gitlab-ci.yml文件中。此文件位於專案儲存庫的根目錄,用以描述CI/CD管道的配置。它由多個步驟、任務和指令組成,定義了代碼應如何被編譯、審查及部署。撰寫此文件所使用的語言為YAML。
  • Pipelines: 在GitLab CI/CD中,管道是一系列階段和作業的集合,針對特定分支或標籤在您的儲存庫中指定要執行的動作。透過每當有新提交或合併請求時啟動管道,您可以自動化測試和部署流程。
  • Jobs and Stages: 階段代表管道中的步驟,如建置、測試和部署。您在每個階段內指定一或多個作業——即個別的工作單元。這些作業可以在不同的執行器上運行(例如虛擬機、容器或Kubernetes pod),並且可以同時或依序執行。
  • Runners: GitLab CI/CD使用執行器來執行管道中的任務。GitLab提供共享執行器和自定義執行器,您可以在自己的基礎設施上設置。由於GitLab執行器會監控新作業並在安全隔離的環境中運行它們,因此您的建置和測試將始終運行。
  • Job Artifacts and Reports: GitLab CI/CD允許您保存管道內產生的工件,例如代碼覆蓋率結果、測試報告或已建置的二進制文件。您可以下載這些工件,用於部署或進一步調查。
  • 整合與部署: GitLab CI/CD 提供多種整合方式,可將您的程式碼部署至各種環境,包括 Kubernetes 叢集、Azure 或 AWS 或 Google Cloud 等雲端基礎設施,甚至是自訂伺服器。您可以選擇建立自己的部署腳本,或使用 GitLab 提供的預定義部署範本。
  • 監控與反饋: GitLab CI/CD 透過 GitLab 使用者介面,讓您能夠獲取有關管線狀態和進展的資訊。我們可以檢查日誌、追蹤每個作業的運行狀況,並在管線運行成功或失敗時收到通知。

GitLab CI/CD 包含多種功能,如快取、環境變數、秘密管理等,讓您能夠根據需求自訂和優化 CI/CD 工作流程。

總體而言,GitLab CI/CD 簡化了軟體的建立、測試和部署流程,使團隊能夠更快速且高效地開發高品質應用程式。

GitLab CI: 平行處理

對開發者而言,沒有什麼比推送新程式碼後需要長時間等待所有工作完成更令人煩躁的了。本指南將逐步展示如何透過平行處理顯著縮短部署時間。

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


2 GitLab 作業的同時執行

使用GitLab CICD執行平行部署自動化相當簡單,但有幾個設定參數需要留意。本教學將逐步介紹如何設定平行執行以加速部署,並將結果通報給SRE團隊。讓我們開始吧!

3 GitLab – 區域平行部署

GitLab 平行部署工作流程

為提升執行效率,我們需同時執行多個部署任務。在每個部署任務中,需執行如建立網站不同區塊、整合網路伺服器及進行設定更新等指令。

我們用於建立和部署GitLab應用程式的管道中有超過XX個任務。這些任務並非同等重要。有些是只需數秒即可完成的快速操作,而其他則是需要精心優化的長時間過程。每個管道都代表團隊成員及來自更廣泛社群的貢獻者的變更。為確保更新如預期運作並與產品其餘部分整合,所有應用程式/專案貢獻者必須等待管道完成。為維持團隊生產力,我們希望管道能盡快完成。

因此,我們持續監控管道的長度。例如,上一版本中成功的管道系列大約需53.8分鐘才能完成。

假設我們每日執行約100至200個管道,我們希望探究是否能優化流程,改變長時間運行任務的執行方式。

4 GitLab – 任務的順序執行

在此部分,您已探討了任務的順序執行。在本系列第二部分中,您將了解我們如何通過並行運行來解決瓶頸任務。

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo