0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn CI/CD Flutter Đưa Ứng Dụng Lên TestFlight Sử Dụng Github Actions

Đăng vào 1 tuần trước

• 3 phút đọc

1. Giới Thiệu

Nếu bạn đang đọc bài viết này, có lẽ bạn đã quen thuộc với các khái niệm như Github Actions, CI/CD, TestFlight, và Flutter. Trong bài viết này, tôi sẽ cung cấp hướng dẫn chi tiết để triển khai CI/CD cho ứng dụng Flutter của bạn, tập trung vào các bước thực hiện mà không sa vào lý thuyết quá nhiều.

Khi bạn làm việc với các dịch vụ của Apple, bạn cần phải thực hiện các thao tác đăng ký và cấu hình để sử dụng các tài nguyên mà họ cung cấp.

2. Chuẩn Bị

Để bắt đầu, bạn cần chuẩn bị những điều sau:

  • Tài khoản Apple Developer để đăng nhập vào App Store Connect.
  • Dự án Flutter và tài khoản Github.
  • Máy tính chạy MacOS, chẳng hạn như MacBook hoặc Mac Mini.

Nếu bạn chưa có tài khoản Apple Developer, bạn có thể đăng ký:

  • Tài khoản cá nhân: phí hàng năm là 99 USD.
  • Tài khoản doanh nghiệp: phí hàng năm là 299 USD.

2.1 Tạo Khóa API cho App Store Connect

Để có thể đẩy file .ipa lên TestFlight bằng các câu lệnh CI/CD, bạn cần phải có apiKey, apiIssuer, và file private key .p8. Truy cập vào link này để tạo khóa và tải file về, bạn sẽ nhận được file .p8 với định dạng AuthKey_$apiKey.p8.

2.2 Chứng Chỉ và Hồ Sơ Cung Cấp

Bước này rất quan trọng, vì không có chúng, bạn sẽ không thể ký ứng dụng từ xa thành công.

2.2.1 Tạo Certificate Signing Request

  • Mở ứng dụng Keychain Access.app trên máy Mac của bạn.
  • Chọn Certificate Assistant trên thanh menu và chọn Request a Cert....
  • Điền thông tin email (đã đăng ký Apple ID) và tên người ký, sau đó chọn Saved to disk để lưu lại file tạo ra.

2.2.2 Tạo Certificate

Truy cập vào trang Apple Developer để tạo chứng chỉ:

  • Nhấn vào dấu + bên cạnh chữ Certificates.
  • Chọn Apple Distribution và tải lên file .certSigningRequest vừa tạo.
  • Nhấn tiếp tục và hoàn tất mà không cần tải xuống file .cer.

2.2.3 Tạo Hồ Sơ Cung Cấp (Profiles)

  • Chọn tab Profiles và nhấn tạo mới.
  • Chọn phương thức phân phối là App Store Connect.
  • Chọn App ID cho ứng dụng của bạn và chứng chỉ đã tạo.
  • Đặt tên cho hồ sơ và nhấn Generate để tải về file .mobileprovision.

2.2.4 Kiểm Tra Hồ Sơ Cung Cấp

Mở dự án Flutter của bạn và sử dụng Xcode để kiểm tra.

  • Trong Xcode, vào tab Signing và bỏ chọn Automatically manage signing.
  • Nhập hồ sơ .mobileprovision mà bạn đã tạo.
  • Nếu mọi thứ đúng, bạn sẽ không thấy báo lỗi. Nếu có lỗi, hãy thử khởi động lại máy tính.

3. Cài Đặt

Sử dụng câu lệnh sau để chuyển đổi file sang định dạng base64:

base64 -i path/to/file.txt | pbcopy

Truy cập repository trên Github và tạo một secret mới.

3.1 Tạo Chữ Ký Của Android (Có thể bỏ qua)

Nếu bạn chưa biết về .jkskey.properties, bạn có thể tham khảo hướng dẫn tại bài viết gốc về Flutter.

3.2 Chứng Chỉ .p12 Base64

Lấy file từ Keychain Access hoặc Xcode. Xuất file .p12 và lưu lại với tên BUILD_CERTIFICATE.

3.3 Hồ Sơ Cung Cấp .mobileprovision Base64

Tạo secret tương ứng với file .mobileprovision đã tạo trước đó.

3.4 Tạo File ExportOptions.plist

Tạo file này từ Xcode, đảm bảo sign được hồ sơ trước khi bắt đầu.

3.5 Khóa API Private Key .p8 Base64

Chuyển đổi file .p8 thành base64 để tạo secret cho Github.

3.6 GitHub Repository Token

Tạo token bằng cách vào Developer Setting và tạo Personal Access Token với quyền Repo.

3.7 Workflow Đầy Đủ

Tạo file workflow bên trong dự án của bạn với tên .github/workflows/.main.yaml. Copy đoạn mã mẫu mà tôi cung cấp bên dưới:

yaml Copy
name: Build & Release
...

4. Kết Quả

Sau nhiều lần thử nghiệm, cuối cùng quá trình CI/CD đã thành công.

5. Tổng Kết

Hy vọng qua bài viết này, bạn sẽ nắm được cách:

  • Tạo chứng chỉ và hồ sơ để ký cho Xcode.
  • Lấy được khóa cho App Store Connect API.
  • Hiểu biết về Github secret và token.
  • Tự động tạo ra github artifact và release, cùng với khả năng upload file ipa lên TestFlight.

Tại sao nên sử dụng Github Secret?

Github Secret giúp bảo vệ thông tin nhạy cảm như khóa API và thông tin xác thực, tránh rủi ro tiết lộ khi làm việc với repository công khai.

6. Tài Liệu Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào