blog.dopana

Back

Việc tối ưu hóa tốc độ và chi phí cho đường ống CI/CD (Continuous Integration / Continuous Deployment) là ưu tiên hàng đầu của nhiều đội ngũ kỹ thuật. Chuyển đổi các workflow CI/CD từ GitHub-hosted runners sang Blacksmith là một giải pháp cực kỳ đơn giản và hiệu quả. Vì Blacksmith được thiết kế như một bản thay thế trực tiếp (drop-in replacement), bạn không cần viết lại đường ống CI, đổi nền tảng hay sửa đổi cú pháp YAML cốt lõi.

Bài viết này sẽ giải thích bài toán hiệu năng CI/CD, cách thức Blacksmith giải quyết và hướng dẫn chi tiết 2 phương pháp chuyển đổi trong dưới 5 phút.

Vấn đề của GitHub-Hosted Runners tiêu chuẩn#

Khi dự án mở rộng, các công việc CI/CD như chạy unit test, build Docker image hay biên dịch source code ngày càng tốn nhiều thời gian. Runner tiêu chuẩn của GitHub (ubuntu-latest) thường có giới hạn về CPU, RAM và tốc độ đĩa I/O:

  • Tốc độ đóng gói chậm: Docker build và cache phải tải qua mạng thay vì tận dụng ổ cứng SSD/NVMe cục bộ.
  • Chi phí cao: Chi phí tính theo phút chạy của các runner cấu hình cao trên GitHub khá đắt đỏ.
  • Nghẽn tài nguyên: Các bài test tích hợp lớn thường bị chậm do thiếu véc-tơ vCPU.
flowchart LR
    A[Commit Code] --> B[GitHub Workflow Triggered]
    B --> C{Runner Selection}
    C -->|Thủ công / Tiêu chuẩn| D[GitHub Standard Runner\n- Tốc độ trung bình\n- Cache qua Network]
    C -->|Blacksmith Drop-in| E[Blacksmith High-Perf Runner\n- vCPU mạnh hơn\n- NVMe Caching cục bộ]
    D --> F[Build Time: 10-15 phút]
    E --> G[Build Time: 3-5 phút]

Các điều kiện tiên quyết (Prerequisites)#

Trước khi bắt đầu chuyển đổi, bạn cần đảm bảo đáp ứng các yêu cầu hạ tầng sau:

  • Chỉ hỗ trợ GitHub Organization: Blacksmith được thiết kế riêng cho các tài khoản Organization trên GitHub, hiện chưa hỗ trợ tài khoản cá nhân (Personal Account).
  • Truy cập mạng (IP Allowlist): Nếu Organization của bạn cấu hình tường lửa/IP allowlist nghiêm ngặt, hãy thêm các dải IP control plane của Blacksmith vào danh sách cho phép.

Phương pháp 1: Sử dụng Wizard tự động (Khuyên dùng)#

Cách nhanh nhất để chuyển đổi toàn bộ repository là sử dụng trình hướng dẫn (wizard) của Blacksmith, tự động tạo Pull Request cho bạn.

  1. Đăng ký tài khoản: Truy cập Dashboard của Blacksmith và tạo tài khoản.
  2. Liên kết GitHub: Cấp quyền truy cập cho Blacksmith vào GitHub Organization của bạn.
  3. Chạy Wizard: Chọn repository bạn muốn chuyển đổi ngay trong Dashboard.
  4. Kiểm tra Pull Request: Wizard sẽ tự động quét thư mục .github/workflows/ và mở một Pull Request chứa các thay đổi.
  5. Merge PR: Rà soát lại thay đổi, merge Pull Request và các commit tiếp theo sẽ tự động chạy trên runner của Blacksmith.

Phương pháp 2: Chuyển đổi thủ công (Chỉ sửa 1 dòng YAML)#

Nếu muốn tự kiểm soát và cập nhật workflow thủ công, bạn chỉ cần thay đổi thuộc tính runs-on trong các file cấu hình YAML.

Mở file workflow của bạn (ví dụ: .github/workflows/ci.yml) và thay thế ubuntu-latest bằng tên runner tương ứng của Blacksmith:

.github/workflows/ci.yml
# TRƯỚC: Sử dụng runner tiêu chuẩn của GitHub
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

# SAU: Sử dụng runner hiệu năng cao của Blacksmith
jobs:
  test:
    runs-on: blacksmith-4vcpu-ubuntu-2404 // [!code ++]
    steps:
      - uses: actions/checkout@v4
yaml

[!TIP] Bạn không cần thay đổi bất kỳ hành động (action) nào trong các bước steps. Mọi cú pháp GitHub Actions hoàn toàn được giữ nguyên.

Các kích thước Runner phổ biến#

Bạn có thể lựa chọn cấu hình runner phù hợp với khối lượng công việc của từng job:

  • blacksmith-4vcpu-ubuntu-2404: Dành cho các công việc tiêu chuẩn (Standard workloads).
  • blacksmith-8vcpu-ubuntu-2404: Dành cho các công việc trung bình hoặc build Docker (Medium/Docker builds).
  • blacksmith-16vcpu-ubuntu-2404: Dành cho các bộ test nặng hoặc biên dịch code phức tạp (Heavy test suites / Compilations).

[!NOTE] Blacksmith cũng cung cấp các tùy chọn tương đương cho phiên bản Ubuntu 22.04 cũng như kiến trúc chip ARM64 nếu dự án của bạn yêu cầu.

Những điều kỳ vọng sau khi chuyển đổi#

  • Native Caching cực nhanh: Các block actions/cache hiện tại tiếp tục hoạt động mượt mà không cần sửa đổi code, tận dụng bộ nhớ NVMe cục bộ của Blacksmith giúp giảm thời gian download cache.
  • Tối ưu hóa Docker: Các bước dựng ảnh với docker/setup-buildx-action tự động hưởng lợi từ cache tối ưu, giúp giảm đáng kể thời gian build Docker image.
  • Hệ thống Analytics trực quan: Sau khi job hoàn thành, bạn có thể đăng nhập vào Blacksmith Dashboard để theo dõi lịch sử chạy, so sánh tốc độ và chi phí tiết kiệm được.
sequenceDiagram
    autonumber
    participant Dev as Developer
    participant GH as GitHub Actions
    participant BS as Blacksmith Runner
    participant NVMe as NVMe Cache Local

    Dev->>GH: Push Commit / PR
    GH->>BS: Kích hoạt Job (runs-on: blacksmith)
    BS->>NVMe: Nạp Cache từ ổ NVMe cục bộ (Siêu tốc)
    NVMe-->>BS: Trả về Layer Cache
    BS->>BS: Thực thi Build & Test
    BS-->>GH: Báo cáo kết quả thành công

Tài liệu tham khảo#

  1. Blacksmith Quickstart Documentation
  2. Blacksmith - 2x Faster GitHub Actions for Half the Cost
  3. Want to make your GitHub Actions workflows faster?
  4. Blacksmith Observability & Dashboard