Skip to content
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Fx Studio
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Written by chuotfx on September 16, 2019

Deploy iOS Application với Fabric

Tutorials

Contents

  • 1. Fabric là gì?
  • 2. Cài đặt Fabric
  • 3. Build & Upload ở Local
  • 4. Build & Upload ở CI
  • Tổng kết

Đây là một phần quan trọng mà bắt buộc bạn phải cấu hình. Vì nhiều nguyên nhân khách quan lẫn chủ quan nên bạn phải deploy được ứng dụng lên các dịch vụ như Testflight, DeployGate, Fabric … để tester và Khách hàng có thể tải được app về để test.

​ Trong phần này mình chỉ đề cập tới dịch vụ Fabric thôi. Các dịch vụ khác để sau hoặc các bạn tự tìm hiểu, nó cũng không quá phức tạp lắm.

1. Fabric là gì?

Fabric là một thư viện Python mạnh mẽ cho phép bạn thực hiện các công việc deploy cũng như các tác vụ admin môi trường phát triển đến các server production. Nói một cách cụ thể thì Fabric cho phép chúng ta:

  • Chạy một hàm Python bất kỳ từ command line
  • Cho phép ta chạy các lệnh shell thông qua SSH một các dễ dàng và mang hơi hướng của Python (Pythonic) Về cơ bản, mọi người dùng đều sử dụng Fabric như là một công cụ để tự động hoá các công việc hàng ngày.

2. Cài đặt Fabric

  • Đăng ký account
    • Truy cập vào trang chủ: https://www.fabric.io

    • Tải app của nó về máy tính và tiến hành đăng nhập vào:

 

    • Tiến hành lựa chọn project (Fabric tự động quét máy tính bạn và show ra các project đang làm)

 

    • Tiếp tục làm theo hướng dẫn, nó rất là dễ. Chung quy lại có 3 cái lớn cần làm
      • Thêm vào PodFile 2 thư viện: Fabric và Crashlytics
pod 'Fabric'
pod 'Crashlytics'
      • Add a Run Script Build Phase (xem trên trang hướng dẫn)
      • Add Your API Key (xem trên trang hướng dẫn)
      • Init Your Kit (xem trên trang hướng dẫn)
    • Trang hướng dẫn : https://fabric.io/kits/ios/crashlytics/install
  • Tiến hành build bản đầu tiên sau khi đã config và cài đặt xong tất cả.
    • Khi build thì cần tạo Organizations trước để phân biệt các dự án với nhau
  • Bạn truy cập vào lại account Fabric trên web thì sẽ thấy bản build của bạn và cần lấy thông tin sau
    • API Key
    • Build Secret

 

  • Tiếp tục với việc edit DASH BOARD của app
    • Chọn Beta > Manage Group > tiến hành thêm group, thêm người, edit gì đó…

Tới đây thì bạn đã oke cho việc setup Fabric rồi.

 

3. Build & Upload ở Local

  • Mở file Fastfile và tiến hành thêm các đoạn lane sau:
    • Các KEY thì bạn sử dụng key cá nhân của mình đã tạo ở trên
desc "Upload Fabric"
  private_lane :upload_fabric do |options|
    crashlytics(
      api_token: "YOUR_API_KEY",
      build_secret: "YOUR_BUILD_SECRET",
      notes_path: "./fastlane/release_notes.txt",
      groups: ["#{options[:groups]}"]
    )
  end
  • Tạo release note cho bản build
desc "Create release notes"
    private_lane :create_release_notes do |options|
    sh "git log -1 --pretty=tformat:\"#{options[:format]}\" > release_notes.txt"
  end
  • Edit lane để khi build xong thì Fastlane tiếp tục upload lên Fabric
    • Khi đẩy bản build lên Fabric bằng local thì với mạng sẽ rất chập chờn và có khi fail
    • Bạn cần chỉ định đúng group để bản build gởi tới được.
desc "Build App Local"
  lane :build_local do
    make_build_folder
    build_ios_app(
      scheme: "TheLastProject_Development", 
      workspace: "TheLastProject.xcworkspace",
      configuration: "Debug", 
      export_method: "development",
      output_directory: "./build",
      output_name: "TheLastProject_Dev.ipa",
      silent: true,
      clean: true
    )
    create_release_notes(format: 'Appstore: %h %s')
    upload_fabric(groups: "develop")
  end
  • Mở Terminal lên và chạy lệnh build ở local để tận hưởng
bundle exec fastlane build_local
  • Build và Upload thành công thì như sau

  • Sau khi đã test thành công ở Local thì bạn có thể kiểm tra trên trang DASH BOARD fabric của bạn để xem bản build đã lên thành công thiệt hay không

 

4. Build & Upload ở CI

  • Khi đã ổn với Local thì tiến tới mục tiêu lớn là trên máy CI. Bạn edit lại đoạn lane build app cho CI
desc "Build App"
  lane :build do
    make_build_folder
    disable_automatic_code_signing(
      path: "TheLastProject.xcodeproj"
    )
    import_certificate(
      keychain_name: "ios-build.keychain",
      keychain_password: "travis",
      certificate_path: "./scripts/certs/dev.p12",
      certificate_password: "12345678"
    )
    update_project_provisioning(
      xcodeproj: "TheLastProject.xcodeproj",
      profile: "./scripts/profiles/TheLastProject_Dev.mobileprovision",
      target_filter: "TheLastProject",
      build_configuration: "Debug",
    )
    build_ios_app(
      scheme: "TheLastProject_Development", 
      workspace: "TheLastProject.xcworkspace",
      configuration: "Debug", 
      export_method: "development",
      output_directory: "./build",
      silent: true,
      clean: true,
      skip_profile_detection: true,
      export_options: {
        provisioningProfiles: { "com.fx.thelastproject": "TheLastProject_Dev" }
      }
    )
    create_release_notes(format: 'Appstore: %h %s')
    upload_fabric(groups: "batman")
    enable_automatic_code_signing(
      path: "TheLastProject.xcodeproj"
    )
  end
  • Sau đó tiến hành commit lên và chờ đợi CI chạy để xem kết quả report có đúng như mong đợi hay không.
  • Bảo mật các KEY của mình
    • Vào setting trong Travis CI tạo các biến môi trường (Environment Variables) để lưu trữ và bảo mật
    • Edit lại các đoạn code mà sử dụng các key đó.
      • Ví dụ: Biến tên là TEN_BIEN thì trong file Fastfile muốn sử dụng thì cú pháp như sau:
ENV["TEN_BIEN"]
    • Edit lại đoạn lane upload với 2 biến môi trường vừa được tạo
desc "Upload Fabric"
  private_lane :upload_fabric do |options|
    crashlytics(
      api_token: ENV["FABRIC_API_KEY"],
      build_secret: ENV["FABRIC_BUILD_SECRET"],
      notes_path: "./fastlane/release_notes.txt",
      groups: ["#{options[:groups]}"]
    )
  end

  • Mở lại trang Fabric để kiểm tra một lần nữa. Nếu thấy có bản build thì chúc mừng bạn đã thành công tới bước này. Việc còn lại là chọn group tester và bấm nút send để Tester có thể tải và test được app.

 

Tổng kết

  • Cài đặt Fabric & Crashlytics
  • Upload bản build lên Fabric
  • Quản lý các tester
  • Quản lý các build version
  • Gởi builds cho các tester
  • Cấu hình với Travis CI để auto deploy app

 

FacebookTweetPinYummlyLinkedInPrintEmailShares23

Related Posts:

  • Tổng hợp về Protocol & Closure trong iOS
    Tổng hợp về Protocol & Closure trong iOS
  • SwiftUI - Phần 1 :  Làm quen với SwiftUI
    SwiftUI - Phần 1 : Làm quen với SwiftUI
  • MainActor và điều gì xảy ra với Data trên Main Thread
    MainActor và điều gì xảy ra với Data trên Main Thread
  • Lập trình hướng đối tượng (OOP) với Swift
    Lập trình hướng đối tượng (OOP) với Swift
Tags: ci/cd, crashlytics, fabric
Written by chuotfx

Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Donate – Buy me a coffee!

Fan page

Fx Studio

Tags

Actor Advanced Swift api AppDistribution Asynchronous autolayout basic ios tutorial blog callback ci/cd closure collectionview combine concurrency CoreData Core Location crashlytics darkmode dart dart basic dart tour Declarative decoding delegate deploy fabric fastlane firebase flavor flutter GCD iOS mapview MVVM optional protocol rxswift Swift Swift 5.5 SwiftUI SwiftUI Notes tableview testing TravisCI unittest

Recent Posts

  • Raw String trong 10 phút
  • Dispatch Semaphore trong 10 phút
  • Tổng kết năm 2022
  • KeyPath trong 10 phút – Swift
  • Make color App Flutter
  • Ứng dụng Flutter đầu tiên
  • Cài đặt Flutter SDK & Hello world
  • Coding Conventions – người hùng hay kẻ tội đồ?
  • Giới thiệu về Flutter
  • Tìm hiểu về ngôn ngữ lập trình Dart

You may also like:

  • MainActor và điều gì xảy ra với Data trên Main Thread
    MainActor và điều gì xảy ra với Data trên Main Thread
  • Creating UI trong iOS
    Creating UI trong iOS
  • SwiftUI - Phần 1 : Làm quen với SwiftUI
    SwiftUI - Phần 1 :  Làm quen với SwiftUI
  • Lập trình hướng đối tượng (OOP) với Swift
    Lập trình hướng đối tượng (OOP) với Swift
  • iOS & Swift - Tuyển tập các câu hỏi cho phỏng vấn
    iOS & Swift - Tuyển tập các câu hỏi cho phỏng vấn

Archives

  • February 2023 (1)
  • January 2023 (2)
  • November 2022 (2)
  • October 2022 (1)
  • September 2022 (5)
  • August 2022 (6)
  • July 2022 (7)
  • June 2022 (8)
  • May 2022 (5)
  • April 2022 (1)
  • March 2022 (3)
  • February 2022 (5)
  • January 2022 (4)
  • December 2021 (6)
  • November 2021 (8)
  • October 2021 (8)
  • September 2021 (8)
  • August 2021 (8)
  • July 2021 (9)
  • June 2021 (8)
  • May 2021 (7)
  • April 2021 (11)
  • March 2021 (12)
  • February 2021 (3)
  • January 2021 (3)
  • December 2020 (3)
  • November 2020 (9)
  • October 2020 (7)
  • September 2020 (17)
  • August 2020 (1)
  • July 2020 (3)
  • June 2020 (1)
  • May 2020 (2)
  • April 2020 (3)
  • March 2020 (20)
  • February 2020 (5)
  • January 2020 (2)
  • December 2019 (12)
  • November 2019 (12)
  • October 2019 (19)
  • September 2019 (17)
  • August 2019 (10)

About me

Education, Mini Game, Digital Art & Life of coders
Contacts:
contacts@fxstudio.dev

Fx Studio

  • Home
  • About me
  • Contact us
  • Mail
  • Privacy Policy
  • Donate
  • Sitemap

Categories

  • Art (1)
  • Blog (22)
  • Code (4)
  • Combine (22)
  • Flutter & Dart (24)
  • iOS & Swift (86)
  • RxSwift (37)
  • SwiftUI (76)
  • Tutorials (70)

Newsletter

Stay up to date with our latest news and posts.
Loading

    Copyright © 2023 Fx Studio - All rights reserved.

    Share this ArticleLike this article? Email it to a friend!

    Email sent!