常見問題

CI/CD 設定中最常遇到的問題與解決方案,快速排查疑難雜症。

Pipeline 執行問題

Pipeline 沒有被觸發?

Job 一直卡在 pending 狀態?

# 重啟 GitLab Runner 服務
sudo systemctl restart gitlab-runner

# 查看 Runner 日誌
sudo journalctl -u gitlab-runner -f

Docker 建置問題

出現 "Cannot connect to the Docker daemon" 錯誤?

需要啟用 Docker-in-Docker(DinD)服務:

build-image:
  image: docker:24.0
  services:
    - docker:24.0-dind    # 必須加這個!
  variables:
    DOCKER_HOST: tcp://docker:2376
    DOCKER_TLS_CERTDIR: "/certs"
  script:
    - docker build -t my-image .

Docker build 失敗,提示權限不足?

# /etc/gitlab-runner/config.toml
[[runners]]
  name = "my-runner"
  executor = "docker"
  [runners.docker]
    privileged = true    # 加入此行
    image = "docker:24.0"

部署問題

SSH 部署出現 Host key verification failed?

# 在 before_script 中加入目標主機的 SSH 金鑰
before_script:
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | ssh-add -
  - mkdir -p ~/.ssh
  # 方法一:掃描並加入 known_hosts
  - ssh-keyscan -H $DEPLOY_HOST >> ~/.ssh/known_hosts
  # 方法二:停用嚴格模式(較不安全,僅用於測試)
  - echo "StrictHostKeyChecking no" >> ~/.ssh/config

Registry 登入失敗(401 Unauthorized)?

部署後服務沒有更新?

# 確認 docker compose up 使用了正確的映像版本
docker compose pull     # 先拉取最新映像
docker compose up -d --no-build   # 不重新建置,使用已拉取的映像

# 確認映像版本
docker compose images

# 強制重建容器(即使映像相同)
docker compose up -d --force-recreate
更多問題可查看 資源索引 中的官方文件和社群論壇。