Mong muốn:
- Tích hợp CI/CD vào máy chủ mạnh và chủ động hơn shared runners của Github CI/CD.
- Công ty bạn có thể muốn bảo mật hơn do bạn có thể đang dùng gitlab tự dựng, máy chủ gitlab không cho truy cập ra/vào bên ngoài.
Yêu cầu:
- Có repo gitlab.
- Có máy chạy Ubuntu hoặc Debian.
Setup trong repo gitlab như sau
- Vào trang tạo runner

- Chọn Linux, tick ô Run untagged jobs và nhấn Create runner

- Tới trang này bạn lưu token đang hiện ra lại và nhấn Go to runners page

Cài trong máy chủ như sau
- Cài gitlab-runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner- Chạy lệnh gitlab-runner register –url https://gitlab.com –token <YOUR_TOKEN> như bước cuối của mục trước và điền các thông tin cần thiết.
- Sửa file /etc/gitlab-runner/config.toml
- sửa privileged = true
- thêm volumes = [“/cache”,”/var/run/docker.sock:/var/run/docker.sock”]
 
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
  session_timeout = 1800
[[runners]]
  name = "debian"
  url = "https://gitlab.com"
  id = 24616229
  token = "glrt-k7yNhiQgVcK_CTgsAjMu"
  token_obtained_at = 2023-06-23T16:29:14Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    image = "ruby:2.7"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
    volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock"]
- Chạy các lệnh sau
gitlab-runner stop
gitlab-runner start
gitlab-runner run- Vào mục Setting -> CI/CD sẽ thấy đã có runner sẵn sàng.

Setup để chạy gitlab-runner mỗi khi máy khởi động
- chạy lệnh crontab -e và thêm dòng sau vào cuối cùng
@reboot sudo gitlab-runner run&Tận hưởng thành quả
Ví dụ tôi muốn mỗi lần nhánh main có commit thì build lại file docker tag latest có thể thêm file .gitlab-ci.yml vào thư mục gốc của repo với nội dung như sau
stages:
  - push-to-registry
registry-job:
  
  stage: push-to-registry
  image: docker:latest
  services:
    - docker:18-dind
  script:
    - docker build -t <DOCKER_REPO>:latest .
    - docker push <DOCKER_REPO>:latest
  only:
  - main
- Ăn ngay

Article Categories:
 config
 
                                        
                
                 
  
  
  
  
  
 