Hướng dẫn thực chiến về tích hợp GitLab CI với điện thoại đám mây: Kiểm thử tự động và triển khai liên tục

Bài viết này giải thích chi tiết cách kết nối điện thoại đám mây với GitLab CI để thực hiện kiểm thử tự động và triển khai liên tục, giảm thao tác thủ công và nâng cao hiệu quả. Kết hợp các tính năng như vân tay phần cứng độc lập chống liên kết, hoạt động 7×24 của HiveCloud Box, cung cấp giải pháp chi phí thấp, độ tin cậy cao cho người dùng thương mại điện tử xuyên biên giới, tiếp thị mạng xã hội và game.

✍ NestBox Team ⏱ 11 phút đọc

Tại sao cần kết hợp điện thoại đám mây với GitLab CI?

Trong hoạt động hàng ngày của thương mại điện tử xuyên biên giới, tiếp thị mạng xã hội và game “cày cuốc”, bạn có thể đã gặp những vấn đề đau đầu này: mỗi lần cập nhật ứng dụng phải tự tay cài đặt lại và kiểm tra trên hàng chục điện thoại; khi vận hành nhiều tài khoản thường xuyên kích hoạt kiểm soát rủi ro của nền tảng vì dấu vân tay thiết bị bị khóa; muốn dùng quy trình CI/CD để tự động chạy kiểm thử hồi quy, nhưng lại thấy quản lý điện thoại thật khó khăn và chi phí cao.

CI/CD truyền thống kết hợp với thiết bị vật lý hoặc trình giả lập, hoặc chi phí phần cứng cao (hàng chục điện thoại chất đầy bàn làm việc), hoặc gian lận dấu vân tay bị nền tảng từ chối ngay lập tức. Sự xuất hiện của điện thoại đám mây đã lấp đầy khoảng trống “có thể kiểm soát, có thể lập trình, mô phỏng thiết bị thực”. Sau khi tích hợp điện thoại đám mây với GitLab CI, bạn chỉ cần push một phiên bản mới lên kho mã nguồn, pipeline CI sẽ tự động phân phối đến nhiều điện thoại đám mây để thực hiện cài đặt, chụp màn hình, kiểm thử UI, thậm chí hoàn thành việc đăng bài hàng loạt cho tài khoản mạng xã hội, toàn bộ quá trình không cần can thiệp thủ công.

Dữ liệu cho thấy, sau khi áp dụng giải pháp điện thoại đám mây + CI/CD, chu kỳ kiểm thử giảm từ 4 giờ xuống còn 25 phút, chi phí nhân lực giảm 70%. Trong bài viết hôm nay, tôi sẽ hướng dẫn bạn từng bước cách kết nối điện thoại đám mây của NestBox Cloud với GitLab CI, đạt được bước nhảy vọt từ mã nguồn đến tự động hóa đầu cuối.

Cơ bản về GitLab CI: Bạn chỉ cần một Runner

Cốt lõi của GitLab CI là Runner, nó chịu trách nhiệm thực thi các công việc được định nghĩa trong .gitlab-ci.yml. Một Runner có thể chạy trên máy vật lý, máy ảo, hoặc trên máy chủ nơi điện thoại đám mây đang hoạt động.

Để giao tiếp với điện thoại đám mây, chúng ta cần cài đặt ADB (Android Debug Bridge) trên máy chủ nơi Runner chạy. Vì hầu hết điện thoại đám mây đều dùng hệ điều hành Android, ADB là kênh duy nhất để kết nối với điện thoại. Giả sử bạn đã có một phiên bản GitLab (hoặc sử dụng gitlab.com), tiếp theo chỉ cần:

  1. Đăng ký một Runner: Trong Settings của dự án → CI/CD → Runners, lấy token, sau đó thực thi gitlab-runner register trên máy chủ.
  2. Cài đặt ADB: adb devices sẽ liệt kê tất cả các thiết bị đã kết nối.

Nhưng có một điểm quan trọng: Runner không chạy trên chính điện thoại đám mây, mà chạy trên một máy chủ Linux có thể kết nối mạng đến điện thoại đám mây thông qua ADB. Điện thoại đám mây cần bật gỡ lỗi ADB và có một địa chỉ IP:cổng cố định. Hầu hết các nhà cung cấp dịch vụ điện thoại đám mây đều cung cấp địa chỉ kết nối ADB, ví dụ NestBox Cloud sẽ hiển thị thông tin ADB của từng thiết bị trong bảng điều khiển.

Thực chiến: Viết .gitlab-ci.yml để thực hiện kiểm thử tự động

Giả sử dự án của bạn là một APK Android, mỗi lần commit sẽ chạy kiểm thử khói (smoke test) trên 10 điện thoại đám mây. Chúng ta cần một giai đoạn script để cài đặt APK và chạy kiểm thử Monkey.

stages:
  - install
  - test

variables:
  APK_PATH: "app/build/outputs/apk/debug/app-debug.apk"
  DEVICES: "10.0.0.1:5555 10.0.0.2:5555 10.0.0.3:5555" # Địa chỉ mẫu

install:
  stage: install
  script:
    - for device in $DEVICES; do
        echo "Installing to $device";
        adb -s $device install -r $APK_PATH;
      done

test:
  stage: test
  script:
    - for device in $DEVICES; do
        echo "Running test on $device";
        adb -s $device shell monkey -p com.example.myapp --throttle 500 --randomize-script 1000;
        # Tập lệnh tùy chỉnh chụp màn hình hoặc lấy logcat
        adb -s $device exec-out screencap -p > screenshot_${device//./_}.png;
      done
  artifacts:
    paths:
      - "*.png"

Khi CI chạy, 10 điện thoại đám mây đồng thời cài đặt và thực thi kiểm thử Monkey, ảnh chụp màn hình tự động tải lên GitLab. Bạn thậm chí có thể tự động phân bổ lại thiết bị khi kiểm thử thất bại.

Lưu ý ở đây: Nếu điện thoại đám mây thường xuyên được đặt lại, địa chỉ kết nối ADB có thể thay đổi mỗi lần. Việc chọn dịch vụ như NestBox Cloud cung cấp địa chỉ kết nối ADB cố định và hoạt động liên tục là rất quan trọng. Điện thoại đám mây của nó sau khi tạo sẽ giữ nguyên IP và cổng trong thời gian dài, hoạt động 7×24 không tắt, Runner có thể ghi cứng trong cấu hình mà không cần lấy danh sách thiết bị động mỗi lần.

Nâng cao: Dấu vân tay phần cứng độc lập chống liên kết và quản lý đa phiên

Nếu công việc của bạn liên quan đến vận hành nhiều tài khoản (ví dụ thương mại điện tử xuyên biên giới quản lý đồng thời 50 tài khoản mạng xã hội, studio game chạy đồng thời 10 nhân vật), kẻ thù lớn nhất là phát hiện chống liên kết của nền tảng. Điện thoại đám mây truyền thống nếu dùng chung thông tin phần cứng (như IMEI, địa chỉ MAC, model thiết bị) rất dễ bị nhận dạng là cùng một người dùng.

Một trong những điểm bán hàng cốt lõi của NestBox Cloud là dấu vân tay phần cứng độc lập. Mỗi điện thoại đám mây khi xuất xưởng được cấp phát 12 tham số duy nhất như IMEI, Android ID, WLAN MAC, v.v., và các tham số này không thay đổi trong suốt vòng đời, cũng không được chia sẻ với thiết bị khác. Điều này rất quan trọng trong tích hợp GitLab CI: vì tập lệnh CI thường cài cùng một APK, nếu nền tảng phát hiện hàng chục thiết bị có cùng dấu vân tay, sẽ lập tức khóa tài khoản. Dấu vân tay độc lập của NestBox Cloud giúp mỗi tài khoản kiểm thử trông giống như một người dùng thực sự độc lập.

Ngoài ra, Pipeline của GitLab CI có thể kích hoạt nhiều công việc đồng thời, bạn cần có thể kết nối nhiều điện thoại đám mây cùng lúc. NestBox Cloud hỗ trợ đa phiên không giới hạn, bạn có thể tạo, xóa, đặt lại thiết bị hàng loạt thông qua API và quản lý linh hoạt nhóm thiết bị trong tập lệnh CI. Ví dụ, gọi API REST của NestBox Cloud trong before_script để cấp phát một thiết bị rảnh:

RESPONSE=$(curl -s "https://api.nestbox.top/v1/device/allocate?pool=test-pool")
DEVICE_IP=$(echo $RESPONSE | jq -r '.ip')
echo "Allocated device: $DEVICE_IP"
adb connect $DEVICE_IP

Cách này tránh phải cấu hình thủ công danh sách thiết bị, CI có thể co giãn linh hoạt. Và mô hình tính phí theo phút của NestBox Cloud cho phép bạn chỉ trả tiền cho thời gian sử dụng thiết bị thực tế, sau khi kiểm thử kết thúc, thiết bị tự động giải phóng, chi phí giảm đến mức tối thiểu – có phản hồi từ người dùng, trước đây thuê 50 điện thoại thật mỗi tháng tốn 15.000 tệ, sau khi chuyển sang NestBox Cloud, chỉ sử dụng 2 giờ mỗi ngày khi CI chạy, phí hàng tháng chỉ 300 tệ, giảm 98%.

Kịch bản thực tế: Thương mại điện tử, mạng xã hội, game sử dụng thế nào?

Thương mại điện tử xuyên biên giới: Kiểm thử đăng sản phẩm hàng loạt

Giả sử bạn vận hành một nhóm cửa hàng Shopee, mỗi ngày đăng 500 sản phẩm. Mỗi sản phẩm cần chụp ảnh, tải lên, chỉnh sửa từ điện thoại. Sử dụng GitLab CI + điện thoại đám mây, bạn có thể viết một tập lệnh tự động, đọc dữ liệu sản phẩm từ CSV, mô phỏng thao tác thủ công trên điện thoại đám mây (thông qua nhập liệu ADB, vuốt), đồng thời gọi tính năng Tự động hóa RPA của NestBox Cloud để đăng sản phẩm không cần giám sát. Pipeline CI chạy tự động mỗi tuần một lần, 50 điện thoại đám mây làm việc đồng thời, hoàn thành khối lượng công việc của một tuần chỉ trong 2 giờ.

Tiếp thị mạng xã hội: Đăng bài theo lịch cho nhiều tài khoản

Người dùng làm TikTok hoặc Instagram marketing, sợ nhất là chuyển đổi tài khoản thường xuyên dẫn đến liên kết IP. Thông qua tác vụ định kỳ (Schedule Pipeline) của GitLab CI, kích hoạt vào một thời điểm cố định mỗi ngày, mở ứng dụng tương ứng trên mỗi điện thoại đám mây, tự động đăng nội dung đã thiết lập. Vì IP của NestBox Cloud là IP dân cư sạch, và dấu vân tay phần cứng của mỗi thiết bị độc lập, tỷ lệ khóa tài khoản của nền tảng giảm hơn 90%. Có nhóm đã kiểm tra, chạy liên tục 30 ngày không có lịch sử khóa tài khoản.

Game cày cuốc: Treo máy hàng loạt và tự động hóa nhiệm vụ

Đối với game thảnh thơi (như “Afk Arena”), bạn cần treo máy 24 giờ để tự động hoàn thành phó bản. GitLab CI không phù hợp để chạy lâu dài, nhưng bạn có thể kết hợp hàng đợi Redis: CI chịu trách nhiệm đẩy lệnh nhiệm vụ đến từng điện thoại đám mây, phía thiết bị chạy một tập lệnh Python thường trực (giữ kết nối qua ADB). Độ khả dụng 99.95% của NestBox Cloud có nghĩa là ngay cả khi gặp sự cố Alibaba Cloud, thiết bị sẽ tự động di chuyển, đảm bảo tài khoản cày cuốc của bạn không bị mất lợi nhuận do điện thoại mất kết nối. Ví dụ thực tế: Một studio sử dụng 100 điện thoại đám mây NestBox để chạy script World of Warcraft Classic, sản lượng hàng tuần ổn định 50.000 vàng, tương đương khoảng 6.000 tệ, chi phí thiết bị chỉ 400 tệ.

Tổng kết: Tại sao chọn NestBox Cloud?

Từ thực chiến ở trên, có thể thấy chìa khóa kết hợp điện thoại đám mây và GitLab CI là: thiết bị phải ổn định, có thể lập trình, cách ly dấu vân tay, chi phí kiểm soát được.

  • Hoạt động 7×24: Script CI có thể kết nối bất cứ lúc nào, không cần đợi điện thoại khởi động; thiết bị không bao giờ mất kết nối.
  • Dấu vân tay phần cứng độc lập: Loại bỏ hoàn toàn liên kết nhiều tài khoản, tỷ lệ thành công 100%.
  • Đa phiên không giới hạn: Không có giới hạn số lượng thiết bị, quản lý API thân thiện.
  • Tự động hóa RPA: Kết hợp ADB hoặc UiAutomator, thực hiện toàn bộ quy trình không cần giám sát.
  • Tính phí theo phút: Trong kịch bản kiểm thử, dùng bao lâu trả bấy nhiêu, không lãng phí một xu.
  • Độ khả dụng 99.95%: Kiến trúc Alibaba Cloud + khả dụng cao, thời gian ngừng hoạt động cả năm không quá 4 giờ.

Nếu nhóm của bạn đang đau đầu về kiểm thử tự động và vận hành nhiều tài khoản, hãy thử tích hợp NestBox Cloud vào quy trình GitLab CI của bạn. Bắt đầu từ việc cấu hình một Runner, đến khi hàng trăm điện thoại đám mây chạy tác vụ song song, chỉ cần một ngày là có thể đi vào hoạt động. Cải thiện hiệu quả thực sự không bao giờ đến từ việc dồn nhân lực, mà là dùng công cụ đúng để giao lại công việc lặp đi lặp lại cho mã nguồn.

Dùng thử miễn phí Liên hệ Gửi email