GitLab CI/CD Pipeline 是一個持續整合和持續部署 (CI/CD) 工具,能夠自動化軟體開發、測試和部署流程。
GitLab Pipeline 基本上是一組執行程序的指令碼,由二個主要組件組成,第一個組件是Job,Job描述編譯、測試和部署過程中執行命令的程式碼,第二個組件是階段(Stages),階段(Stages)定義執行Job的順序,透過.gitlab-ci.yml的配置文件定義自動執行流程和指派任務內容,可以依據專案目的定義一個或多個 CI/CD 階段和任務,達到建立、測試、部署和監控的自動化流程。
以下是實作 GitLab CI/CD Pipeline 的步驟:
設定 GitLab 專案,在 GitLab 上建立一個專案,將代碼上傳至該專案的儲存庫。
建立 .gitlab-ci.yml 檔案:在專案的根目錄中建立一個 .gitlab-ci.yml 的 YAML 檔案,在 .gitlab-ci.yml 中,定義一個或多個 CI/CD 階段,每個階段包含一個或多個任務。。
在Gitlab專案頁面左邊選單Build下的子選單Pipeline editor,點選Configure pipeline,即可進入建立Pipeline editor頁面,這裡有.gitlab-ci.yml 檔案基本的骨架模板,可以使用它快速建立.gitlab-ci.yml。
提交並觸發 CI/CD Pipeline:將 .gitlab-ci.yml 檔案提交到你的 GitLab 專案。當代碼提交到 GitLab 時,GitLab 將自動偵測 .gitlab-ci.yml,並觸發 CI/CD Pipeline。
查看 CI/CD Pipeline:可以在 GitLab 的專案頁面左邊選單Build的下拉選單中查看 Pipeline和 Job的運行情況,包括任務的成功或失敗狀態、執行日誌等信息。
自訂任務和流程:根據你的專案需求,可以自訂任務,例如建置 Docker 容器、執行測試、部署到不同的環境等。
整合其他工具:GitLab CI/CD Pipeline 支援整合各種工具和服務,例如容器管理平台(如 Kubernetes)、通知服務、部署到雲端等。
自動化部署到生產環境:在完成測試和驗證後,你可以自動化部署你的應用程序到生產環境,以確保持續且安全的交付。
.gitlab-ci.yml 中的元素說明:
stages:
- build
- test
- deploy
job_name: #job_name 是Job的名稱
stage: build #stage 定義了該Job屬於哪個階段
script: # script 包含了Job要執行的指令
- echo "Building the application"
test-job:
stage: test
script:
- echo "Running tests..."
when: manual # 只有在手動觸發時執行這個 Job
script:
- echo "Building the application"
- npm install
- npm build
build-job:
stage: build
before_script:
- echo "Setting up environment"
script:
- echo "Building the application"
after_script:
- echo "Cleaning up"
variables:
DATABASE_URL: "postgres://user:password@host/db"
deploy-job:
stage: deploy
script:
- echo "Deploying to production..."
environment:
name: production
url: https://example.com
#定義了一個名為 "production" 的環境,並指定 URL
test-job:
stage: test
script:
- echo "Running tests"
dependencies:
- build
#在執行test之前,必須先完成 build 任務,確保在進行測試之前,建置過程已經完成。
deploy-job:
stage: deploy
script:
- echo "Deploying the application"
only:
- master
#deploy-job只會在分支為 "master" 時執行