Phân phối ứng dụng iOS cho người thử nghiệm bằng cách sử dụng Fastlane

Bạn có thể phân phối bản dựng cho người kiểm thử bằng fastlane, một nền tảng nguồn mở tự động hoá việc xây dựng và phát hành ứng dụng iOS và Android. Hàm này tuân theo các hướng dẫn đơn giản được xác định trong Fastfile. Sau khi thiết lập làn nhanh và Fastfile, bạn có thể tích hợp tính năng Phân phối ứng dụng với cấu hình làn nhanh.

Bước 1. Thiết lập đường nhanh

  1. Cài đặt và thiết lập nhanh chóng.

  2. Để thêm tính năng Phân phối ứng dụng vào cấu hình nhanh, hãy chạy lệnh sau từ thư mục gốc của dự án iOS:

    fastlane add_plugin firebase_app_distribution

    Nếu lệnh nhắc bạn đưa ra một tuỳ chọn, hãy chọn Option 3: RubyGems.org.

Bước 2. Xác thực bằng Firebase

Để có thể sử dụng trình bổ trợ nhanh (fastlane), trước tiên, bạn phải xác thực với dự án Firebase của mình theo một trong những cách sau. Theo mặc định, trình bổ trợ Fastlane sẽ tìm thông tin xác thực từ Giao diện dòng lệnh (CLI) của Firebase nếu không có phương thức xác thực nào khác được sử dụng.

Bước 3. Thiết lập Fastfile và phân phối ứng dụng

  1. Trên làn đường ./fastlane/Fastfile, hãy thêm một khối firebase_app_distribution. Hãy sử dụng các tham số sau để định cấu hình phân phối:
    thông số firebase_app_distribution
    app

    Chỉ bắt buộc nếu ứng dụng của bạn không chứa tệp cấu hình Firebase (GoogleService-Info.plist): Mã ứng dụng Firebase của ứng dụng. Bạn có thể tìm thấy Mã ứng dụng trong bảng điều khiển của Firebase, trên trang Cài đặt chung.

    app: "1:1234567890:ios:0a1b2c3d4e5f67890"
    googleservice_info_plist_path

    Đường dẫn đến tệp GoogleService-Info.plist của bạn, so với đường dẫn sản phẩm đã lưu trữ. Đặt thành GoogleService-Info.plist theo mặc định.

    Tệp này được dùng để lấy mã ứng dụng Firebase của ứng dụng nếu bạn không chỉ định tham số app.

    firebase_cli_token

    Mã thông báo làm mới được in khi bạn xác thực môi trường CI của mình bằng Firebase CLI (hãy đọc nội dung Sử dụng CLI với hệ thống CI để biết thêm thông tin).

    service_credentials_file

    Đường dẫn đến tệp json của tài khoản dịch vụ Google. Xem ở trên để biết cách xác thực bằng thông tin xác thực tài khoản dịch vụ.

    ipa_path

    Thay thế apk_path (không dùng nữa). Đường dẫn tuyệt đối đến tệp IPA mà bạn muốn tải lên. Nếu không chỉ định, thì luồng nhanh sẽ xác định vị trí của tệp từ làn mà tệp được tạo.

    release_notes
    release_notes_file

    Ghi chú phát hành cho bản dựng này.

    Bạn có thể chỉ định trực tiếp ghi chú phát hành:

    release_notes: "Text of release notes"

    Hoặc chỉ định đường dẫn đến một tệp văn bản thuần tuý:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Địa chỉ email của người kiểm thử mà bạn muốn mời.

    Bạn có thể chỉ định người kiểm thử dưới dạng danh sách địa chỉ email được phân tách bằng dấu phẩy:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    Hoặc bạn có thể chỉ định đường dẫn đến một tệp văn bản thuần tuý chứa danh sách các địa chỉ email được phân tách bằng dấu phẩy:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    Các nhóm người kiểm thử mà bạn muốn mời (hãy tham khảo bài viết Quản lý người kiểm thử). Các nhóm được chỉ định bằng email đại diện của nhóm mà bạn có thể tra cứu trong bảng điều khiển của Firebase.

    Bạn có thể chỉ định các nhóm dưới dạng danh sách được phân tách bằng dấu phẩy:

    groups: "qa-team, trusted-testers"

    Hoặc bạn có thể chỉ định đường dẫn đến một tệp văn bản thuần tuý chứa danh sách các tên nhóm được phân tách bằng dấu phẩy:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    Các loại phân phối sau đây là một phần của tính năng beta của người kiểm thử tự động.

    Thiết bị kiểm thử mà bạn muốn phân phối bản dựng (tham khảo bài viết Kiểm thử tự động).

    Bạn có thể chỉ định các thiết bị thử nghiệm dưới dạng danh sách các thiết bị thử nghiệm được phân tách bằng dấu chấm phẩy:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    Hoặc bạn có thể chỉ định đường dẫn đến một tệp văn bản thuần tuý chứa danh sách các thiết bị thử nghiệm được phân tách bằng dấu chấm phẩy:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    Tên người dùng cho tính năng đăng nhập tự động sẽ được dùng trong quá trình kiểm thử tự động.

    test_password
    test_password_file

    Mật khẩu cho tính năng đăng nhập tự động sẽ được dùng trong quá trình kiểm thử tự động.

    Hoặc bạn có thể chỉ định đường dẫn đến một tệp văn bản thuần tuý chứa mật khẩu:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    Tên tài nguyên cho trường tên người dùng để tự động đăng nhập sẽ được sử dụng trong kiểm thử tự động.

    test_password_resource

    Tên tài nguyên cho trường mật khẩu dùng để tự động đăng nhập sẽ được dùng trong kiểm thử tự động.

    test_non_blocking

    Chạy kiểm thử tự động một cách không đồng bộ. Truy cập vào bảng điều khiển của Firebase để xem kết quả thử nghiệm tự động.

    debug

    Một cờ boolean. Bạn có thể thiết lập thuộc tính này thành true để in kết quả gỡ lỗi chi tiết.

Ví dụ:

platform :ios do
    desc "My awesome app"
    lane :distribute do
        build_ios_app(...)
        # build_ios_app is a built-in fastlane action.

        release = firebase_app_distribution(
            app: "1:123456789:ios:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!"
        )

    end
end

Để cung cấp bản dựng cho người kiểm thử, hãy chạy làn của bạn:

fastlane <lane>

Giá trị trả về của hành động là một hàm băm đại diện cho bản phát hành đã tải lên. Bạn cũng có thể sử dụng hàm băm này bằng lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Để biết thêm thông tin về các trường có sẵn trong hàm băm này, vui lòng xem tài liệu về API REST.

Trình bổ trợ nhanh sẽ xuất ra các đường liên kết dưới đây sau khi tải bản phát hành lên. Các đường liên kết này giúp bạn quản lý tệp nhị phân và đảm bảo rằng người kiểm thử và nhà phát triển khác có bản phát hành phù hợp:

  • Đường liên kết đến bảng điều khiển của Firebase hiển thị một bản phát hành duy nhất. Bạn có thể chia sẻ đường liên kết này với các nhà phát triển khác trong tổ chức của mình.
  • Một đường liên kết đến bản phát hành trong trải nghiệm của người kiểm thử (đoạn video trên web iOS) cho phép người kiểm thử xem ghi chú phát hành và cài đặt ứng dụng trên thiết bị của họ. Người kiểm thử cần có quyền truy cập vào bản phát hành để sử dụng đường liên kết này.
  • Một đường liên kết đã ký trực tiếp tải xuống và cài đặt tệp nhị phân của ứng dụng (tệp IPA). Đường liên kết này sẽ hết hạn sau một giờ.

Sau khi bạn phân phối bản dựng, bản dựng đó sẽ có trong trang tổng quan Phân phối ứng dụng của bảng điều khiển của Firebase trong 150 ngày. Khi bản dựng còn 30 ngày kể từ ngày hết hạn, thông báo hết hạn sẽ xuất hiện trong bảng điều khiển và trong danh sách bản dựng của người kiểm thử trên thiết bị kiểm thử của họ.

Những người kiểm thử trước đây chưa được mời kiểm thử ứng dụng sẽ nhận được lời mời qua email để bắt đầu. Những người kiểm thử hiện tại sẽ nhận được thông báo qua email cho biết một bản dựng mới đã sẵn sàng kiểm thử. Để tìm hiểu cách cài đặt ứng dụng kiểm thử, hãy xem phần Thiết lập làm người kiểm thử. Bạn có thể theo dõi trạng thái của từng người kiểm thử để xác định xem họ có chấp nhận lời mời hay không và liệu họ có tải ứng dụng xuống trong bảng điều khiển của Firebase hay không.

(Không bắt buộc) Để tự động tăng số bản dựng mỗi khi tạo bản phát hành mới trong tính năng Phân phối ứng dụng, bạn có thể sử dụng thao tác firebase_app_distribution_get_latest_releasehành động increment_build_number. Mã sau đây cung cấp một ví dụ về cách tự động tăng số bản dựng:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_build_number({ build_number: latest_release[:buildVersion].to_i + 1 })
end

Để tìm hiểu thêm về tính năng trình bổ trợ nhanh này, hãy xem phần Nhận thông tin về bản phát hành mới nhất của ứng dụng.

Bước 4 (Không bắt buộc). Quản lý người kiểm thử cho việc phân phối

Bạn có thể thêm và xoá người kiểm thử khỏi dự án hoặc nhóm bằng cách sử dụng tệp Fastfile hoặc bằng cách trực tiếp chạy các thao tác nhanh. Các thao tác đang chạy sẽ trực tiếp ghi đè các giá trị được đặt trong Fastfile.

Sau khi thêm người kiểm thử vào dự án Firebase, bạn có thể thêm họ vào từng bản phát hành. Những người kiểm thử bị xoá khỏi dự án Firebase sẽ không còn quyền truy cập vào các bản phát hành trong dự án của bạn nữa, nhưng họ có thể giữ lại quyền truy cập vào các bản phát hành trong một khoảng thời gian.

Nếu có một số lượng lớn người kiểm thử, bạn nên cân nhắc sử dụng nhóm.

Sử dụng Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

Thực hiện các thao tác nhanh

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

Bạn cũng có thể chỉ định người kiểm thử bằng --file="/path/to/testers.txt thay vì --emails.

Tác vụ firebase_app_distribution_add_testersfirebase_app_distribution_remove_testers cũng chấp nhận các đối số sau:

  • project_name: Số dự án Firebase của bạn.
  • group_alias (không bắt buộc): Nếu được chỉ định, người kiểm thử sẽ được thêm vào (hoặc bị xoá khỏi) nhóm đã chỉ định.
  • service_credentials_file: Đường dẫn đến tệp thông tin xác thực dịch vụ của Google.
  • firebase_cli_token: Mã thông báo xác thực cho Firebase CLI.

service_credentials_filefirebase_cli_token là các đối số giống nhau mà thao tác tải lên sử dụng.

Bước 5 (Không bắt buộc). Xem thông tin về bản phát hành mới nhất của ứng dụng

Bạn có thể dùng thao tác firebase_app_distribution_get_latest_release để tìm nạp thông tin về bản phát hành mới nhất của ứng dụng trong phần Phân phối ứng dụng, bao gồm cả thông tin về phiên bản ứng dụng, ghi chú phát hành và thời gian tạo. Các trường hợp sử dụng bao gồm việc tự động tăng phiên bản và chuyển sang ghi chú phát hành của bản phát hành trước.

Giá trị trả về của hành động là một hàm băm đại diện cho bản phát hành mới nhất. Bạn cũng có thể sử dụng hàm băm này bằng lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Để biết thêm thông tin về các trường có sẵn trong hàm băm này, vui lòng xem tài liệu về API REST.

Thông số

Thông số firebase_app_distribution_get_LATEST_release
app

Chỉ bắt buộc nếu ứng dụng của bạn không chứa tệp cấu hình Firebase (GoogleService-Info.plist): Mã ứng dụng Firebase của ứng dụng. Bạn có thể tìm thấy Mã ứng dụng trong bảng điều khiển của Firebase, trên trang Cài đặt chung.

app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path

Đường dẫn đến tệp GoogleService-Info.plist của bạn, so với đường dẫn sản phẩm đã lưu trữ. Đặt thành GoogleService-Info.plist theo mặc định.

Tệp này được dùng để lấy mã ứng dụng Firebase của ứng dụng nếu bạn không chỉ định tham số app.

firebase_cli_token

Mã thông báo làm mới được in khi bạn xác thực môi trường CI của mình bằng Firebase CLI (hãy đọc nội dung Sử dụng CLI với hệ thống CI để biết thêm thông tin).

service_credentials_file

Đường dẫn đến tệp json của tài khoản dịch vụ Google. Xem tài liệu trước về cách xác thực bằng thông tin xác thực tài khoản dịch vụ.

service_credentials_json_data

Nội dung của tệp json tài khoản dịch vụ của Google. Xem tài liệu trước về cách xác thực bằng thông tin xác thực tài khoản dịch vụ.

debug

Một cờ boolean. Bạn có thể thiết lập thuộc tính này thành true để in kết quả gỡ lỗi chi tiết.

Các bước tiếp theo