banner
Jun 24, 2023
150 Views

Tự dựng gitlab runner để CI/CD gitlab

Written by
banner

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
Setting -> CI/CD -> New Project Runner
  • Chọn Linux, tick ô Run untagged jobs và nhấn Create runner
Linux -> Run untagged jobs -> 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
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 Tags:
· · · ·
Article Categories:
config
banner

Leave a Reply

Your email address will not be published. Required fields are marked *