Các tính năng trong CI

Sau đây là một số tính năng mà bạn có thể tìm thấy trong hầu hết các hệ thống CI.

Môi trường

Điều quan trọng là bạn phải chọn và hiểu rõ môi trường phần cứng và phần mềm mà hệ thống thực thi quy trình công việc. Những điểm quan trọng cần lưu ý đối với ứng dụng Android là:

  • Nền tảng: Linux, Mac, Windows và phiên bản của các nền tảng này.
  • Bộ nhớ còn trống: Việc xây dựng ứng dụng và chạy trình mô phỏng có thể sử dụng nhiều RAM. Do đó, bạn thường cần phải điều chỉnh các tham số như kích thước vùng nhớ khối xếp của JVM để tránh các lỗi hết bộ nhớ.
  • Phần mềm cài đặt sẵn: Các hệ thống CI thường cung cấp hình ảnh chứa một tập hợp lớn các công cụ có sẵn, chẳng hạn như Bộ phát triển Java (JDK), Bộ phát triển phần mềm (SDK) Android, các công cụ bản dựng, nền tảng và trình mô phỏng.
  • Cấu trúc chạy và tập lệnh: ARM, x86. Điều này rất quan trọng khi sử dụng trình mô phỏng.
  • Biến môi trường: Một số do hệ thống CI đặt (ví dụ: ANDROID_HOME) và bạn có thể đặt biến của riêng mình để tránh thông tin xác thực được mã cứng trong quy trình làm việc của mình.

Bạn nên cân nhắc nhiều khía cạnh khác, chẳng hạn như số lượng lõi có sẵn và liệu tính năng ảo hoá có được bật để chạy trình mô phỏng hay không.

Nhật ký và báo cáo

Khi một bước không thành công, hệ thống CI sẽ thông báo cho bạn và thường không cho phép bạn hợp nhất thay đổi đó. Để tìm hiểu xem đã xảy ra sự cố gì, hãy tìm lỗi trong nhật ký.

Ngoài ra, quá trình tạo bản dựng và kiểm thử sẽ tạo ra các báo cáo thường được lưu trữ dưới dạng cấu phần phần mềm của bản dựng cụ thể đó. Tuỳ thuộc vào hệ thống CI, bạn có thể sử dụng các trình bổ trợ để trực quan hoá kết quả của các báo cáo đó.

Thời gian chạy bộ nhớ đệm và CI

Các hệ thống CI sử dụng bộ nhớ đệm bản dựng để tăng tốc quá trình này. Ở hình thức đơn giản nhất, chúng sẽ lưu tất cả các tệp bộ nhớ đệm của Gradle sau khi một bản dựng thành công và khôi phục các tệp đó trước khi tạo một bản dựng mới. Tính năng này dựa trên tính năng bộ nhớ đệm bản dựng của Gradle và bạn nên bật trong dự án.

Sau đây là một số cách giúp cải thiện thời gian chạy và độ tin cậy:

  • Mô-đun: Phát hiện mô-đun nào bị ảnh hưởng bởi một thay đổi và chỉ tạo và kiểm thử những mô-đun đó.
  • Bỏ qua bộ nhớ đệm: Nếu bản dựng chứa các tập lệnh mà nhà phát triển đã sửa đổi, hãy bỏ qua bộ nhớ đệm của bản dựng. An toàn hơn khi bạn tạo ứng dụng từ đầu.
  • Kiểm thử phân đoạn: Đặc biệt là các kiểm thử được đo lường, việc phân đoạn kiểm thử trên nhiều thiết bị có thể hữu ích. Tính năng này được trình chạy Android, Thiết bị do Gradle quản lý và Phòng thử nghiệm Firebase hỗ trợ.
  • Bản dựng phân đoạn: Bạn có thể phân đoạn bản dựng trên nhiều phiên bản máy chủ.
  • Bộ nhớ đệm từ xa: Bạn cũng có thể sử dụng bộ nhớ đệm từ xa của Gradle.

Thử lại các lượt kiểm thử không thành công

Tình trạng không ổn định đề cập đến các quá trình kiểm thử hoặc công cụ không liên tục. Bạn phải luôn cố gắng tìm và khắc phục các vấn đề tạo ra các bản dựng và hoạt động kiểm thử không ổn định, nhưng một số vấn đề trong số đó rất khó tái hiện, đặc biệt là khi chạy kiểm thử đo lường. Một chiến lược phổ biến là thử chạy lại mỗi khi không thành công, tối đa số lần thử lại.

Không có cách nào để định cấu hình các lần thử lại, vì các lần thử lại có thể xảy ra ở nhiều cấp. Bảng sau đây trình bày việc bạn có thể làm để ứng phó với thất bại trong kiểm thử không ổn định:

Lỗi

Hành động

Trình mô phỏng không phản hồi trong một giây, kích hoạt thời gian chờ

Chạy lại quy trình kiểm thử không thành công

Không khởi động được trình mô phỏng

Chạy lại toàn bộ việc cần làm

Đã xảy ra lỗi kết nối trong giai đoạn thanh toán mã

Bắt đầu lại quy trình làm việc

Quan trọng là bạn phải ghi nhật ký và theo dõi xem phần nào trong hệ thống không ổn định và đầu tư vào việc đảm bảo CI hoạt động nhanh và đáng tin cậy, chỉ dựa vào số lần thử lại