Fastline打包+發(fā)布蒲公英詳解

簡介

是用Ruby語言編寫的一套自動化工具集和框架,每一個工具實際都對應一個Ruby腳本,用來執(zhí)行某一個特定的任務,而fastlane核心框架則允許使用者通過類似配置文件的形式,將不同的工具有機而靈活的結合在一起,從而形成一個個完整的自動化流程。比如我需要完成一套發(fā)布流程:

#發(fā)布到AppStore

lane :release do
  #增加build版本號,需要先配置build setting
  increment_build_number
  #pod資源更新
  cocoapods
  #打包
  gym
  #發(fā)布到AppStore
  deliver(force: true)
  #發(fā)布testflight測試
  testflight
end

準備工作

  • 首先確認是否安裝了ruby,終端查看下ruby版本
> ruby -v
  • 確認是否安裝了Xcode命令行工具
> xcode-select  --install

安裝步驟

  • 如果用的是mac自帶的ruby,需要 sudo權限
>  sudo gem install fastlane
  • 如果報錯:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/commander
> sudo gem install -n /usr/local/bin fastlane

初始化

在項目根目錄下,初始化Fastlane

fastlane init//初始化配置文件,會在fastlane文件夾看到以下兩個文件

Appfile //配置工程AppID和AppleID(開發(fā)者賬號)
Fastfile //管理工程的lane的各個action,可以看成設置的任務流程

新版本安裝的時候出現(xiàn)了下面的分支選擇,按要求選擇就行

1. ??  Automate screenshots
2. ?????  Automate beta distribution to TestFlight (自動testfilght型配置)
3. ??  Automate App Store distribution (自動發(fā)布型配置)
4. ??  Manual setup - manually setup your project to automate your (需要手動配置內容)

配置文件

  • Appfile: 存儲有關開發(fā)者賬號相關信息
  • Fastfile: 核心文件,主要用于 命令行調用和處理具體的流程,lane相對于一個方法或者函數(shù)
  • Deliverfile: deliver工具的配置文件
  • metadata: 元數(shù)據(jù)文件夾
  • Matchfile: Match操作對應的配置文件
  • screenshots: 截圖文件夾

除開手動配置項,fastlane 會要求填寫Apple ID,選擇你的Team(如果有多個) 然后fastlane會自動檢測當前目錄下項目的App Name和App Identifier、Project。然后自行確認并按流程執(zhí)行。

常用命令

  • fastlane actions: 展示所有有效action列表
  • fastlane action [action_name]: 展示一個action的詳細說明,使用方法等
  • fastlane lanes: 展示fastfile中的所有l(wèi)ane
  • fastlane list: 展示fastfile中的所有的有效的lane
  • fastlane new_action: 創(chuàng)建一個新的action
  • fastlane env: 打印fastlane、ruby環(huán)境,一般提bug到issue的時候會要求提供

生命周期

生命周期

自動上傳至fir或者蒲公英

  • 執(zhí)行如下命令安裝fir插件:
sudo fastlane add_plugin firim
  • 自動上傳到fir還需執(zhí)行如下命令:
sudo gem install -n /usr/local/bin fir-cli
  • 如果是蒲公英平臺,安裝如下插件:
fastlane add_plugin pgyer

報錯如下

Plugin 'pgyer' was not properly loaded, make sure to follow the plugin docs

解決辦法

sudo gem install -n /usr/local/bin bundler
bundle install
sudo fastlane -n /usr/local/bin add_plugin pgyer

實例

module Fastlane
  module Actions
    module SharedValues
      POD_INSTALL_CUSTOM_VALUE = :POD_INSTALL_CUSTOM_VALUE
    end
    class PodInstallAction < Action
      def self.run(params)
        repo = "-no-repo-update"
        command = []
        command << "pod install"
        if params[:repo_update]
          repo = "--repo-update"
        end
        command << repo
        if params[:verbose]
          command << "--verbose"
        end
        result = Actions.sh(command.join(' '))
        UI.success(command.join(' ') + " Successfully ")
        return result
      end

      def self.description
        "pod install action"
      end
      def self.details
        "verbose / repo-update"
      end
      def self.available_options
        [
        FastlaneCore::ConfigItem.new(key: :verbose,
                                       description: "Allow output detail in console",
                                       optional: true,
                                       is_string: false,
                                       default_value: false),
          FastlaneCore::ConfigItem.new(key: :repo_update,
                                       description: "Allow output detail in console",
                                       optional: true,
                                       is_string: false,
                                       default_value: false)
        ]
      end
      def self.output
      end
      def self.return_value
      end
      def self.authors
        ["yang"]
      end
      def self.is_supported?(platform)
        platform == :ios
      end
    end
  end
end

使用

  • 打開終端cd 到項目根目錄執(zhí)行以下代碼
fastlane beta

打包成功標志

成功標志

Succeed~

補充

  • 如果Deliverfile、screenshots和metadata沒有自動生成,通過deliver init 可以重新初始化
  • fastlane的配置會要求輸入開發(fā)者賬號密碼,通過spaceship與Apple交互,并會產生一份有效期一個月的cookies文件:文件地址: ~/.fastlane/spaceship/[email]/cookie (兩步驗證問題)
  • Matchfile: match 這個action的配置文件,fastlane match init 自動生成,存放git地址等
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容