GitLab CI/CD 完整配置指南

在企業 DevOps 實踐中,我負責建置和維護 GitLab CI/CD 流程,涵蓋從程式碼提交到生產部署的完整自動化。這篇文章將分享 GitLab CI/CD 的基礎配置經驗。 GitLab CI/CD 基礎架構 1. GitLab Runner 部署 自建 Runner 配置: # 安裝 GitLab Runner curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash sudo apt-get install gitlab-runner # 註冊 Runner sudo gitlab-runner register \ --url "https://gitlab.company.com/" \ --registration-token "YOUR_TOKEN" \ --executor "docker" \ --docker-image "alpine:latest" \ --description "Production Runner" \ --tag-list "production,docker" Docker-in-Docker 配置: # /etc/gitlab-runner/config.toml concurrent = 4 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "docker-runner" url = "https://gitlab.company.com/" token = "YOUR_TOKEN" executor = "docker" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure] [runners.docker] tls_verify = false image = "docker:20.10.16" privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] shm_size = 0 .gitlab-ci.yml 基礎範例 簡單的 Node.js 專案配置 # .gitlab-ci.yml image: node:18-alpine # 定義階段 stages: - test - build - deploy # 快取設定 cache: paths: - node_modules/ # 安裝依賴 before_script: - npm ci # 測試階段 test: stage: test script: - npm run test only: - merge_requests - main # 建置階段 build: stage: build image: docker:20.10.16 services: - docker:20.10.16-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY script: - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA only: - main # 部署到測試環境 deploy:staging: stage: deploy script: - echo "Deploying to staging environment" - kubectl set image deployment/myapp myapp=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA environment: name: staging only: - main Harbor 私有映像倉庫整合 Harbor 設定與使用 我們使用 Harbor 作為私有 Docker 映像倉庫,提供安全且高效的映像管理。