DEV Community

Laptop Hưng Phát
Laptop Hưng Phát

Posted on Originally published at technologyspot.vn

Chạy GitHub Actions runner trên Linux: Cấu hình systemd tối ưu CI

Việc phụ thuộc hoàn toàn vào runner mặc định của GitHub thường khiến quy trình CI/CD bị nghẽn do giới hạn tài nguyên 2 vCPU và thời gian xếp hàng. Tận dụng trực tiếp phần cứng máy cá nhân làm self-hosted runner là phương án kinh tế để rút ngắn chu kỳ phản hồi mã nguồn, đặc biệt khi dự án yêu cầu bộ nhớ đệm lớn hoặc các gói build nặng.

Cấu hình runner và khởi chạy nền với systemd

Sau khi tải gói nhị phân từ kho lưu trữ GitHub và hoàn tất xác thực token, runner cần được quản lý như một daemon hệ thống để tự phục hồi sau sự cố hoặc tái khởi động cùng hệ điều hành.

# Tải và cấu hình runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L https://github.com/actions/runner/releases/download/v2.314.1/actions-runner-linux-x64-2.314.1.tar.gz
tar xzf ./actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/your-org/your-repo --token YOUR_TOKEN
Enter fullscreen mode Exit fullscreen mode

Để runner tự chạy dưới quyền người dùng không có đặc quyền root, tạo tệp dịch vụ systemd tại /etc/systemd/system/github-runner.service:

[Unit]
Description=GitHub Actions Self-Hosted Runner
After=network.target

[Service]
ExecStart=/home/runner/actions-runner/run.sh
User=runner
WorkingDirectory=/home/runner/actions-runner
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Kích hoạt tiến trình qua hai lệnh:

sudo systemctl daemon-reload
sudo systemctl enable --now github-runner.service
Enter fullscreen mode Exit fullscreen mode

Đánh giá hiệu năng và kiểm soát tài nguyên khi chạy liên tục

Khi chạy ở trạng thái chờ (idle), tiến trình runner của GitHub tiêu tốn trung bình khoảng 150 MB đến 250 MB RAM, gần như không ảnh hưởng tới tải hệ thống. Tuy nhiên, trong các đợt build mã nguồn hoặc đóng gói Docker container liên tục, tải vi xử lý có thể tăng vọt lên 100% trên các nhân thực thi, kéo nhiệt độ phần cứng lên ngưỡng 75°C - 85°C tùy theo giải pháp tản nhiệt.

Về mặt kiến trúc, self-hosted runner loại bỏ hoàn toàn độ trễ tải docker image từ registry ngoài nhờ cơ chế đệm cục bộ trên ổ cứng NVMe. Đổi lại, rủi ro bảo mật thực thi mã lệnh trên máy trạm nội bộ đòi hỏi cơ chế cô lập nghiêm ngặt, tương tự các nguyên tắc phân vùng an toàn phần cứng được phân tích trên technologyspot.vn.

Nếu máy trạm đảm nhiệm nhiều tác vụ cùng lúc, hãy giới hạn số lượng job đồng thời trong tệp cấu hình và kích hoạt Docker rootless để ngăn chặn mã độc can thiệp trực tiếp vào kernel của hệ điều hành.

Top comments (0)