Roy-Try-Catch
← Back to list

【GitLab】利用 GitLab 執行 CI/CD(持續整合/自動部署)

Roy • Updated 2026-10-15 15:38:43

更新提醒(2026-10):本文寫於 2023 年,.gitlab-ci.yml 範例使用 only 關鍵字,gitlab-runner 的安裝腳本與註冊流程可能也可能已有調整,建議對照 GitLab 官方文件目前的寫法(例如 rules)。若想看另一種 CI/CD 做法,可參考 【CI/CD】Jenkins 打造安全的 Laravel 部署:JCasC 與受限 SSH。

GitLab

什麼是 CI/CD

CI (Continuous Integration)、CD (Continuous Delivery/Deployment) 目的是將測試、建置到部署的流程自動化,取代原本需要人工處理的工作。

  • CI (Continuous Integration):專注在持續整合,透過程式碼的自動化測試和建置,將品質穩定的程式碼合併。越早、越頻繁地整合,整合難度就越低,也能確保最新版本是可以執行的。
  • CD (Continuous Delivery/Deployment):專注在持續部署和交付,依照需要的環境進行建置和部署。

開始測試 CI/CD

首先註冊 GitLab,並將專案 push 到 GitLab 的 Project 上。

進入 GitLab → 專案 → Settings → CI / CD → 展開 Runners。

gitlab_ci_cd_runners

這些資訊是之後設定 gitlab-runner 時會用到的。

進入 VM 安裝 gitlab-runner:

sudo apt update
sudo apt install curl
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner

然後進行註冊:

sudo gitlab-runner register

依照畫面的提示,將 GitLab 頁面上的資料複製貼上,這裡的 executor 選擇 shell。

gitlab_ci_cd

重新整理 GitLab 頁面後,會看到 runner 已經註冊成功。

gitlab_ci_cd_runner

之後的範例以 Laravel 框架為例。

主機上的環境設定就不多做說明。

.gitlab-ci.yml 範例

stages:
  - test
  - deploy
  - cache
unit-test-job:
  stage: test
  tags:
    - "runner_tag"
  # 限制只有 master branch 會執行此 job
  only:
    - master
  script:
    - cd {project_path}
    - php artisan test
cache-job:
  stage: cache
  tags:
    - "runner_tag"
  # 限制只有 master branch 會執行此 job
  only:
    - master
  script:
    - cd {project_path}
    - php artisan cache:clear
    - php artisan optimize
    - php artisan view:cache
deploy-job:
  # 宣告此 job 屬於哪一個 stage
  stage: deploy
  # gitlab runner 的 tags
  tags:
    - "runner_tag"
  # 限制只有 master branch 會執行此 job
  only:
    - master
  # 最後是此 job 要執行哪些動作
  script:
    - cd {project_path}
    - git checkout master
    - git pull origin master
    - composer install

之後測試將 master branch 推上 GitLab,就會在 CI/CD → Jobs 看到執行結果:

gitlab_ci_cd_jobs

CI/CD → Pipelines:

gitlab_ci_cd_pinelines

延伸閱讀

Comments

No comments yet.

請先登入