博客 / 詳情

返回

【GitLab CI/CD 實踐】從 0 到 1 搭建高效自動化部署流程

摘要

GitLab CI/CD 是 GitLab 內置的持續集成和持續部署(CI/CD)工具,它可以幫助開發團隊自動化代碼測試、構建和部署。本指南將介紹如何使用 GitLab CI/CD 搭建完整的自動化部署流程,包括 .gitlab-ci.yml 配置文件的編寫、Stages、Jobs、Artifacts 以及 Runner 的使用。

引言

在現代軟件開發中,自動化部署成為提高開發效率和穩定性的關鍵環節。相比 GitHub Actions 和 Jenkins,GitLab CI/CD 具有與 GitLab 無縫集成的優勢,但許多開發者仍然對其使用方式不太熟悉。本指南將提供詳細的講解和示例代碼,幫助開發團隊高效使用 GitLab CI/CD。

GitLab CI/CD 基本概念

  • Pipeline:GitLab CI/CD 的核心,由多個 Stage 組成。
  • Stage:定義 CI/CD 的不同階段,如 buildtest 和 deploy
  • Job:具體執行的任務,例如編譯代碼或運行測試。
  • Runner:GitLab CI/CD 運行 Job 的環境,可以是共享 Runner 或自託管 Runner。

配置 .gitlab-ci.yml

.gitlab-ci.yml 是 GitLab CI/CD 的核心配置文件,以下是一個基本的 .gitlab-ci.yml 示例:

stages:
  - build
  - test
  - deploy

job_build:
  stage: build
  script:
    - echo "Building the application..."
    - mvn package
  artifacts:
    paths:
      - target/*.jar

job_test:
  stage: test
  script:
    - echo "Running tests..."
    - mvn test

job_deploy:
  stage: deploy
  script:
    - echo "Deploying the application..."
    - scp target/*.jar user@server:/deploy/path

解析:

  • stages 定義了 CI/CD 流程的階段(buildtestdeploy)。
  • job_build 任務構建應用,並保存 target/*.jar 產物(Artifacts)。
  • job_test 任務執行單元測試,確保代碼質量。
  • job_deploy 任務自動化部署,將產物上傳至服務器。

GitLab Runner 的使用

GitLab CI/CD 依賴 Runner 執行 Job,可以使用 GitLab 提供的共享 Runner,或者自己託管 Runner。

安裝 Runner(Linux 示例)

curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner
sudo mv gitlab-runner /usr/local/bin/
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

註冊 Runner

sudo gitlab-runner register \
  --url https://gitlab.com/ \
  --registration-token YOUR_TOKEN \
  --executor shell \
  --description "My Runner" \
  --tag-list "ci,deploy" \
  --run-untagged=false \
  --locked=false

説明:

  • --executor shell 選擇 Shell 作為執行環境(可換為 dockerkubernetes)。
  • --tag-list "ci,deploy" 設定 Runner 適用的 CI/CD 任務。

使用 Artifacts 進行構件管理

Artifacts 用於存儲和共享 Job 產生的文件,例如構建產物。

artifacts:
  paths:
    - target/*.jar
  expire_in: 1 hour
  • paths:指定要保存的文件路徑。
  • expire_in:設置過期時間,默認 30 天。

QA 環節

Q1: GitLab CI/CD 和 Jenkins 有什麼區別?

  • GitLab CI/CD 集成在 GitLab 中,使用 YAML 文件配置,而 Jenkins 需要單獨安裝和維護。

Q2: 如何在 GitLab CI/CD 中使用環境變量?

  • 可以在 GitLab 項目的 Settings > CI/CD > Variables 添加環境變量,然後在 .gitlab-ci.yml 文件中使用 $VAR_NAME

總結

GitLab CI/CD 提供了一種高效的自動化部署方式,能夠幫助團隊提高開發效率和代碼質量。本文介紹了 GitLab CI/CD 的基本概念、.gitlab-ci.yml 配置、Runner 的使用以及 Artifacts 處理方式。

未來,我們可以進一步探索 GitLab CI/CD 的進階功能,如:

  • 使用 Docker 進行容器化部署
  • 結合 Kubernetes 進行自動化運維
  • 監控和優化 CI/CD 運行效率

參考資料

  • GitLab 官方文檔
  • GitLab CI/CD 示例
user avatar backofhan 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.