Thiết lập GitLab Runner cho quy trình CI/CD tự động

Thiết lập Runner trên máy chủ đích

Chọn máy chủ (ví dụ: 10.0.0.5) để triển khai hệ thống CI/CD. Truy cập dự án trên GitLab, vào phần Settings > CI/CD, mở rộng mục Runners. Tạo Runner mới với các thông số:

  • Nền tảng: Linux
  • Tag tùy chỉnh (ví dụ: production)
  • Tích chọn "Run untagged jobs"

Sao chép lệnh cài đặt từ hướng dẫn, thực thi trên máy chủ 10.0.0.5. Đăng ký Runner bằng lệnh được cung cấp kèm token từ GitLab. Khởi động dịch vụ để xác nhận trạng thái hoạt động.

Liên kết Runner với dự án

Runner vừa tạo đã tự động liên kết với dự án. Kiểm tra trạng thái "online" trong mục Runners của GitLab CI/CD. Đảm bảo Runner có quyền truy cập vào kho mã nguồn và máy chủ đích.

Cấu hình pipeline CI/CD

Tạo file .gitlab-ci.yml trong nhánh phát triển (dev) với kịch bản triển khai tự động khi merge vào nhánh chính:

stages:
  - production

deploy_app:
  stage: production
  script:
    - cd /var/www/app
    - git fetch --all
    - git reset --hard origin/main
  after_script:
    - rm -rf $CI_BUILDS_DIR/*/$CI_PROJECT_PATH

Cấu hình này sẽ cập nhật mã nguồn tại thư mục /var/www/app khi có thay đổi trên nhánh main. Lệnh reset --hard đảm bảo đồng bộ trạng thái chính xác với kho lưu trữ.

Kiểm thử quy trình triển khai

Thực hiện các bước kiểm tra:

  1. Tạo file mới trên nhánh dev: echo "test" > deploy_test.txt
  2. Commit và push: git commit -am "Kiểm thử CI/CD" && git push origin dev
  3. Tạo merge request để kết hợp vào nhánh main
  4. Xác minh cập nhật trên máy chủ đích qua lệnh: ls /var/www/app/deploy_test.txt

Xử lý lỗi thường gặp

Lỗi xác thực SSH:

Host key verification failed.
ERROR: Job failed: exit status 1

Khắc phục bằng cách cập nhật known_hosts:

ssh-keygen -R 10.0.0.5
ssh root@10.0.0.5 "exit"

Lỗi kết nối Git:

fatal: git fetch-pack: expected shallow list
ERROR: Job failed: exit status 1

Xóa bộ nhớ đệm build và chạy lại pipeline:

rm -rf $CI_BUILDS_DIR/*/$CI_PROJECT_PATH

Tối ưu không gian lưu trữ

Thêm chỉ thị after_script trong file cấu hình để tự động xóa thư mục build tạm sau mỗi job. Biến môi trường $CI_BUILDS_DIR$CI_PROJECT_PATH giúp xác định chính xác vị trí cần dọn dẹp, ngăn tình trạng chiếm dụng dung lượng trên máy chủ Runner khi xử lý dự án lớn.

Thẻ: gitlab-runner gitlab-ci continuous-deployment

Đăng vào ngày 28 tháng 5 lúc 20:15