使用 GitLab 建構 CI/CD 流水線

設定 GitLab CI/CD

首先,請確保您擁有 GitLab 帳戶和 GitLab 專案。如果您還沒有項目,請為您的應用程式建立一個。然後,您需要設定所需的一切,包括 GitLab Runner。它會執行 .gitlab-ci.ymlfile 檔案中的任務。

GitLab CI/CD 的先決條件 

  • GitLab 帳戶和專案: 您必須擁有有效的 GitLab 帳戶。如果您還有一個專案倉庫來存放原始程式碼和 CI/CD 配置,那就更好了。
  • 伺服器環境: 您應該能夠存取伺服器環境,例如虛擬專用伺服器,您的應用程式將運行在該環境中。
  • 版本控制: 使用版本控制系統(例如 Git)來管理原始程式碼至關重要。透過 Git 和 GitLab 程式碼庫,您可以輕鬆追蹤變更、與團隊協作,並在需要時回滾到舊版本。 

建立 GitLab 項目 

前往 GitLab 控制面板,然後點選「新建專案」按鈕。 

您需要輸入項目名稱和描述。此外,請選擇可見級別,公開或私有。您可以從空白項目開始,也可以使用適合您應用類型的範本。 

然後點選「建立項目」。你的新專案倉庫現在就可以存放你的新程式碼了。 

設定 GitLab Runner 

要設定運行器,請前往專案的“設定”,然後點擊“CI/CD”。您可以使用提供的註冊令牌在「運行器」部分註冊新的運行器。只需按照您選擇的運行器類型(例如 Docker 或 SSH)的步驟操作即可。註冊運行器後,它就可以開始運行您的 CI 管線作業了。 

了解 GitLab CI/CD 管線 

GitLab CI/CD 入門非常簡單。首先,請確保您擁有 GitLab 帳戶和 GitLab 專案。如果您還沒有項目,請為您的應用程式建立一個。 

接下來,您需要設定所需的一切,包括 GitLab Runner。 Runner 非常重要,因為它負責執行管線的工作。它會運行 .gitlab-ci.yml 檔案中的任務。這有助於確保您的程式碼按照預期的方式進行建置、測試和部署。 

什麼是管道? 

流水線是一種自動化流程 它簡化了應用程式的建立、測試和部署流程。 「CI」代表持續集成,開發人員會頻繁地將程式碼變更合併到中央程式碼庫中。 「CD」指的是持續部署或持續交付,它可以自動將應用程式發佈到其目標環境中。 

基本管道配置 

前往 GitLab 控制面板,點選「新建專案」按鈕。輸入項目名稱和描述。同時,選擇項目可見級別,公開或私有。您可以從空白項目開始,也可以使用範本。新增完所有資訊後,點選「建立專案」。 

管道階段和工作 

將部署流程劃分為清晰的階段和任務,您可以保持流程的條理性和細節性。每個階段都分配有工作流程(任務)來執行特定任務。這種設定有助於提高程式碼品質,並使問題修復更加容易。 

正在編寫 .gitlab-ci.yml 

.gitlab-ci.yml 檔案是用 YAML 編寫的,它是 GitLab CI/CD 管線的主要控制中心。此文件定義了 CI/CD 工作流程的階段、作業、相依性和設定。 

它允許您管理整個自動化建置、測試和部署流程。現在,讓我們來了解一下 .gitlab-ci.yml 檔案的結構和重要組成部分。 

.gitlab-ci.yml 的結構 

每個作業都有一個名稱,並且屬於一個階段。階段是管線中的不同步驟,例如「建置」、「測試」或「部署」。 

在每個作業中,您都需要列出執行該作業所需的命令和相依性。您還可以建立變數、使用腳本並包含工件,以協助在管道中的任務之間共用資料。 

定義工作 

倉庫主資料夾中的 `.gitlab-ci.yml` 檔案對於 GitLab CI/CD 配置至關重要。它定義了諸如「建置」、「測試」和「部署」等階段,您可以在這些階段中新增諸如單元測試或在程式碼變更時自動啟動應用程式之類的作業。類似 AWS CodePipeline 的工具可以幫助您有效地管理管線。 

使用變量 

變數可能包含特定於環境的設置,例如資料庫密碼或 API 金鑰。它們還可以涵蓋部署時可能會更改的應用程式設定。 GitLab 提供了多種管理這些變數的方法。您可以直接在 `.gitlab-ci.yml` 檔案中設定它們,使用 GitLab UI 設定專案級變量,或使用環境變數安全地處理敏感資訊。 

GitLab CI/CD 進階功能 

GitLab 提供了許多有助於軟體開發和持續交付的強大功能。 

管理管道工件 

.gitlab-ci.yml 檔案使用空格以清晰的結構組織您的 CI/CD 管線。每個作業都有名稱,並屬於一個階段,例如「建置」、「測試」或「部署」。其中包含命令、依賴項、設定、變數、腳本和工件,以實現無縫的資料共用。這種設定可確保您在 GitLab CI/CD 或其他開源 CI 解決方案(例如 Bitbucket Pipelines)中的工作流程易於理解、可重複使用且一致。 

使用 GitLab 緩存 

倉庫主資料夾中的 `.gitlab-ci.yml` 檔案對於 GitLab CI/CD 配置至關重要。它定義了諸如「建置」、「測試」和「部署」等階段,您可以在這些階段中新增諸如單元測試或在程式碼變更時自動啟動應用程式之類的作業。類似 AWS CodePipeline 的工具可以幫助您有效地管理管線。 

管道觸發器和計劃 

特定事件可以觸發管線,您也可以安排它們在特定時間運行,從而有效率地執行重要功能。變數還允許您定義可在不同作業和階段重複使用的值,使您無需修改主腳本即可自訂自動化建置和部署。 

以下是一個建立職位範本的範例: 

規格:
  輸入:
    階段:
      預設值:構建
      描述:'定義建置階段'
    rust_version:
      預設值:最新
      描述:'指定 Rust 版本,使用 https://hub.docker.com/_/rust/tags 中的值。預設為最新版本。 '
--- 

"build-$[[ inputs.rust_version ]]":
  階段:$[[ inputs.stage ]]
  圖片:rust:$[[ inputs.rust_version ]]
  腳本:
    - cargo build --verbose 

依賴管理 

GitLab 允許您列出作業的依賴項。這表示所需的庫、軟體包或工具會在作業運行前安裝。透過使用諸如 JavaScript 的 npm、Python 的 pip 或 PHP 的 Composer 之類的套件管理器,您可以在 .gitlab-ci.yml 檔案中定義和管理專案所需的依賴項。 

與 Docker 集成 

Docker 與 GitLab CI/CD 工作流程集成,以建立穩定且可重複的環境。 

建置 Docker 映像 

您可以在 .gitlab-ci.yml 檔案中設定 Docker 建置步驟。這將告訴 GitLab CI/CD 在您的自動化工作流程中建立鏡像。 

在 .gitlab-ci.yml 中使用 Docker 

GitLab CI/CD 具有 Docker 執行器,可讓您在 Docker 容器中執行作業。  

您可以選擇符合應用程式需求的特定 Docker 映像。這有助於為每個作業創建穩定且獨立的測試環境。例如,如果您的應用程式使用 Node.js,則可以為 CI/CD 作業使用官方的 Node.js Docker 映像。  

這種方法可以減少因本地環境與 CI/CD 環境差異而可能出現的問題。 Docker 有助於確保可靠性並簡化故障排除。 

Docker整合最佳實踐 

您可以透過以下兩種主要方式將 Docker 整合到您的 CI/CD 工作流程中: 

  • 在 Docker 容器中執行 CI/CD 作業: 您可以建立 CI/CD 作業來執行測試、建置或發布應用程式等操作。這些作業可以在 Docker 容器中運作。
  • 使用 Docker 或 kaniko 建置 Docker 映像: 您可以建立 CI/CD 作業來建立 Docker 映像並將其發佈到容器註冊表。 

GitLab CI/CD 中的安全性 

GitLab CI/CD 會保守秘密。 safe確保環境安全,並遵循特定規則。 

保密管理 

GitLab 可讓您使用專案級變數來儲存金鑰。管線中的某些作業或階段會保留這些變數。 safe 需要時即可進入。 

在安全環境中執行作業 

配置 GitLab Runner 以在受保護的網路中運行,這樣就可以限制只有授權人員或系統才能存取。您也可以使用 Docker 容器來執行 CI/CD 作業。容器輕量且能創造獨立的運作環境。 

合規性和審計日誌 

GitLab 的稽核日誌會記錄諸如作業運作、管線啟動、程式碼變更和使用者操作等事件。每個日誌條目都包含時間戳記、操作執行者或執行程序以及事件詳情。 GitLab 可協助您在共用原始碼庫中保持清晰、可追蹤的 CI/CD 工作記錄。 

故障排除和優化 

解決問題並優化工作流程對於保持良好的持續整合/持續交付 (CI/CD) 流程至關重要。透過及早解決問題並採用巧妙的改進方法,您可以確保管線高效運作並定期交付高品質的軟體。 

常見問題和修復 

GitLab 可以有效地監控和記錄進程,透過偵測資料外洩來加強安全性,並透過實施改進的開發方法來優化效能。 

監控和記錄 

GitLab 會保存日誌一段時間,但您可以根據專案需求變更日誌保存時間。您還可以設定失敗作業警報、監控建置時間以發現開發流程中的瓶頸,以及檢查部署頻率。 

優化管道性能

有幾種技術可用於優化管道性能:

快取依賴項儲存已下載的依賴項,以防止在後續管道運行期間重複下載。

優化技術 產品說明
快取依賴項 儲存已下載的依賴項,以防止在後續管道運行期間重複下載。
平行作業 如果作業之間沒有相互依賴關係,則配置作業並發運行。
使用速度較快的跑者 對於要求較高的任務,請選擇具有更強處理能力或記憶體的跑步機。 
優化測試套件 找出並優化整合測試中運行緩慢的測試,以減少整體執行時間。

現實世界的用例 

GitLab CI/CD 非常靈活,因此非常適合許多實際應用情境。無論是創建簡單的網站,或是部署複雜的微服務架構,它都能勝任。 

Web應用程式的持續集成 

設定 GitLab 管線,使其在每次向共用倉庫提交程式碼時建置應用程式。它可以運行單元測試、整合測試和端到端測試,並檢查程式碼品質。成功完成這些測試後,管線可以自動將應用程式傳送到暫存區進行審核,或直接部署到生產環境。 

連續 Deploy面向雲端服務供應商 

在管線中設定作業,將應用程式建置並打包成可部署的項目,例如 Docker 映像。然後,您可以將它們傳送到您選擇的雲端平台(AWS、Google Cloud Platform、Azure 等)。 

自動化測試流程 

你的 .gitlab-ci.yml 檔案允許你規劃管線中的不同測試步驟。你可以設定作業來執行單元測試(檢查程式碼的各個部分)、整合測試(了解應用程式各個部分如何協同工作)以及端到端測試(模擬真實使用者操作以確保應用程式運作良好)。 

Digital.ai 和 GitLab:攜手實現自動化 

Digital.ai Release 以及 GitLab 集成 

Digital.ai 提供工作流程, 與常用工具的集成以及基於角色的儀表板,以強制執行一致的實踐,保持可見性,並在複雜的環境中大規模無縫交付應用程式。 

Digital.ai Release 與 GitLab 集成 向他們提交和拉動觸發器,以執行交付工作流程和流程,並提高自動化和效率。 

你可能還喜歡