fastlane iOS自動打包

fastlane 打包用於無人值守提交應用包到TestFlight ,蒲公英,fir.im等第三方平臺,感覺覺得速度方面可能會慢一點,但是優勢在於

  • 無人值守
  • 自動拉取最新代碼
  • 自動clean,保證代碼沒有緩存干擾
  • 自動打tag標籤

安裝

個人建議,專門用一臺電腦來打包,mac 是支持遠程控制的,或者是用一個配置比較好的電腦,讓他給你建一個用戶,你就可以使用他的電腦了,而且不會耽擱彼此的工作(共享屏幕的方法

安裝準備

  • xcode 插件安裝或更新:xcode-select --install
  • 更新ruby 最好是最新版本吧

正式安裝

  1. sudo gem install fastlane -NV (如果報錯了就執行:sudo gem install fastlane -n /usr/local/bin )
  2. fastlane init(如果是swift:fastlane init swift)
  3. 然後就wait…

使用

以下是在下配置文件,支持發佈發佈不同的環境到不同的平臺

# 該文件用來命令行打包,自動pull add_tag ,commit,auto_uplaod 到(testflight,fir.im,pgy)
# 1. cd 到對應的工程目前下
# 2.執行對應的命令
# a.發佈到蒲公英: (開發環境)         fastlane pgy
# b.發佈到fir.im:(測試環境)        fastlane fir env:dev/test/prelive/release
# c.發佈到testFlight:(預生產環境)   fastlane tf
# d.發佈到testFlight:(正式環境)     fastlane store
# f. 同時發佈到testflight 和fir.im    fastlane tf_fir
# e.同時發佈到所有環境                fastlane all
#
#
#
#
#
#
#


default_platform(:ios)
platform :ios do
  
  lane :release_ready do
    UI.message("----------release_ready----------")
    ensure_git_status_clean ## 確保當前的代碼都已經提交完成
    git_pull
    increment_build_number # 自增build
    commit_version_bump # 檢查build
    push_to_git_remote
  end


  lane :release_finsh do
    UI.message("----------release_finsh----------")
    
    push_git_tags
  end


  lane :pgy do
    UI.message("----------發佈一個蒲公英 開發版本----------")
    release_ready

    sync_code_signing(type: "adhoc")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      export_method: "ad-hoc",
      configuration: "Debug",# Debug, Test,Prelive, ,Release
      silent: true,
      clean: true,
    )
    pgyer(api_key: "you api key", user_key: "your user key")
    add_git_tag(tag:"dev/#{get_version_number}(#{get_build_number})")

    release_finsh
  end


  lane :fir do |options|
    UI.message("----------發佈一個fir.im 測試版本----------")
    release_ready
    env = options[:env]
    config = "Test"
    message = "測試環境"
    
    if env == "dev"
      config = "Debug"
      message = "開發環境"

    elsif env == "test"
      config = "Test"
      message = "測試環境"

    elsif env == "prelive"
      config = "Prelive"
      message = "預生產環境"

    elsif env == "release"
      config = "Release"
      message = "正式環境"
    else
      config = "Test"
      message = "測試環境"
    end

    sync_code_signing(type: "adhoc")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      export_method: "ad-hoc",
      configuration: config,
      silent: true,
      clean: true,
    )
    firim(firim_api_token: "your token",app_changelog:message)
    add_git_tag(tag:"#{env}/#{get_version_number}(#{get_build_number})")

    release_finsh
  end
  

  lane :tf do
    UI.message("----------發佈一個testfligth預生產版本----------")
    release_ready

    sync_code_signing(type: "appstore")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      configuration: "Prelive",
      silent: true,
      clean: true,
      changelog:"預生產環境"
      )
    upload_to_testflight
    add_git_tag(tag:"prelive/#{get_version_number}(#{get_build_number})")

    release_finsh
  end
  
  lane :store do
    UI.message("----------發佈一個appStore預生產版本----------")
    release_ready

    sync_code_signing(type: "appstore")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      configuration: "Release",
      silent: true,
      clean: true,
      changelog:"正式環境"
      )
    upload_to_testflight
    add_git_tag(tag:"release/#{get_version_number}(#{get_build_number})")

    release_finsh
  end


  lane :tf_fir do
    UI.message("----------同時發佈testFlight 和 fir.im 版本----------")
    fir # fir.im 測試環境
    tf # testflight 預生產環境
  end


  lane :all do
    UI.message("----------發佈所有版本----------")
    pgy # 蒲公英,開發環境
    fir # fir.im 測試環境
    tf # testflight 預生產環境
    store # 正式環境
  end

拓展

不同環境的配置

我們在開發的時候會遇到很多環境,比如有開發環境,測試環境,預生產環境,生產環境,很明顯,Xcode 默認的Debug 和release 是不夠用的,幸運的是,我們可以對其進行擴展,如下:

  1. 添加你想要的配置,你可以duplicate 系統的debug or release ,如果你要發佈應用,建議選擇duplicate release,因爲release 會多一些優化配置
    配置方式
  2. 設置他們對應的宏定義,系統默認只有一個DEBUG
    在這裏插入圖片描述
  3. 配置不同的環境
#ifdef DEBUG // 開發環境
   your code 
#elif TEST // 測試環境
   your code 
#elif PRELIVE // 預生產環境
   your code 
#elif RELEASE // 正式環境
   your code 
#else // 默認也是正式環境
   your code 
#endif
  1. 結果,你就在可以不用修改任何代碼,在開發或者發佈的時候隨意切換了
    在這裏插入圖片描述

製作可執行的腳本

  1. 創建一個.sh後綴的腳本文件
  2. 使用命令:sudo chmod 777 yourfile.sh修改權限
  3. 編寫你想要執行的腳本
  4. 修改雙擊打開方式:
    在這裏插入圖片描述
  5. 收工,雙擊試試

問題記錄

附件

我之前配置的其他fastlane 腳本,都放在這裏了,或許對你有一些幫助github 地址

參考資料

  • 官網地址:>https://docs.fastlane.tools/getting-started/ios/setup/
發佈了53 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章