GitLab 是一個基於 web 的 Git 倉庫管理工具,同時也是一個完整的 CI/CD 解決方案。它提供了許多內建的 CI/CD 工具,使得軟體開發者可以輕鬆地整合持續整合、持續交付、自動化測試等流程。在本文中,我們將介紹 GitLab CI/CD 的概念、優勢以及如何使用它。
1 什麼是 GitLab CI/CD?
GitLab CI/CD 是一種自動化工具,它可以自動化軟體開發的各個階段,從構建、測試、部署到釋出。 CI 即 Continuous Integration,持續整合,就是把各部分程式碼整合到一起,進行編譯測試等工作。而 CD 是 Continuous Deployment,持續部署,將開發好的程式碼部署到實際生產環境。CI/CD 的主要目標是將軟體交付流程自動化,以便開發者能夠更快地交付高質量的軟體。GitLab CI/CD 是 GitLab 的一個元件,它允許開發者將 CI/CD 流程整合到他們的程式碼庫中。
2 GitLab CI/CD 的優勢
GitLab CI/CD 有許多優勢,下面列舉了其中的一些:
- 簡單易用:GitLab CI/CD 的語法簡單易懂,使得開發者能夠很容易地理解和設定 CI/CD 流程。
- 高度可定製:GitLab CI/CD 可以根據不同的需求進行高度定製。它支援多種程式語言和框架,並提供了許多內建的工具和外掛。
- 整合性強:GitLab CI/CD 可以與其他 GitLab 的功能整合,如程式碼管理、問題跟蹤、合併請求等,使得開發者能夠更加高效地管理他們的軟體專案。
- 全平臺支援:GitLab CI/CD 可以執行在任何平臺上,如 Linux、Windows、macOS 等。
- 易於擴充:GitLab CI/CD 提供了豐富的 API 和外掛介面,使得開發者可以很容易地擴充和整合它們的 CI/CD 流程。
3 如何使用 GitLab CI/CD?
使用 GitLab CI/CD 可以分為以下幾個步驟:
- 設定.gitlab-ci.yml 檔案。
- 設定 runner
3.1 設定.gitlab-ci.yml 檔案
.gitlab-ci.yml 是 GitLab CI/CD 的設定檔,它定義了 CI/CD 流程中需要執行的任務和操作。在 GitLab 中,可以在程式碼庫的根目錄下建立一個名為 .gitlab-ci.yml 的檔案。這個檔案可以包含一個或多個 job,每個 job 代表了一個 CI/CD 流程中需要執行的任務。
3.1.1 stages
一个 GitLab CI/CD 流程通常由多个阶段组成。每个阶段由一个或多个 job 组成,这些 job 可以按照一定的顺序运行。在 `.gitlab-ci.yml` 文件中,可以使用 stages 关键字来定义流程中的阶段,如下所示:
stages:
- build
- test
- deploy
在這個例子中,我們定義了三個階段:build、test 和 deploy。
3.1.2 jobs
在每个阶段中,可以定义一个或多个 job,用来执行不同的任务。在 `.gitlab-ci.yml` 文件中,可以使用 jobs 关键字来定义 job,如下所示:
build:
stage: build
script:
- npm install
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
script:
- npm install
- npm run test
needs: [build]
deploy:
stage: deploy
script:
- deploy.sh
needs: [test]
在這個例子中,我們定義了三個 job:build、test 和 deploy。每個 job 都有一個 stage 屬性,用來指定它屬於哪個階段。script 屬性用來指定 job 需要執行的指令碼,artifacts 屬性用來定義 job 生成的構建產物,needs 屬性用來指定 job 執行的前置條件。
在這個例子中,build job 用來安裝依賴和構建專案,test job 用來執行測試,deploy job 用來部署專案。test job 需要依賴於 build job 執行完成之後才能執行,而 deploy job 需要依賴於 test job 執行完成之後才能執行。
3.1.3 variables
在 .gitlab-ci.yml 檔案中,還可以定義一些變數,用來在 CI/CD 流程中傳遞參數或設定資訊。可以使用 variables 關鍵字來定義變數,如下所示:
variables:
DATABASE_URL: postgres://user:password@localhost/mydatabase
這個例子定義了一個名為 DATABASE_URL 的變數,它包含了資料庫的連線資訊。在 CI/CD 流程中,可以使用 $DATABASE_URL 的形式來引用這個變數。
3.2 設定 runner
Runner 就是實際給幹活的機器,GitLab CI/CD 需要一個 runner 來執行 CI/CD 流程。可以使用 GitLab 自帶的 runner,也可以自己搭建 runner。在 GitLab 中,可以通過 Settings -> CI/CD -> Runners 來管理 runner。具體的安裝和設定方法可以參考 GitLab 的官方說明文件。
3.3 實際觸發
需要注意的是,使用 GitLab CI/CD 時需要謹慎處理敏感資訊,比如資料庫密碼、API 金鑰等,以免洩露重要資訊。可以使用 GitLab 提供的 CI/CD 變數和加密機制來保護敏感資訊。
總結
本文介紹了 GitLab CI/CD 的概念、以及如何使用 .gitlab-ci.yml 檔案來定義 CI/CD 流程。我們學習瞭如何定義 stages、jobs 和 variables,並介紹了一些常用的 CI/CD 功能,比如 artifacts 和 dependencies。最後,我們還簡單介紹瞭如何設定 runner。