iOS持續(xù)集成:Fastlane + 蒲公英自動(dòng)打包發(fā)布

1.前言

前段時(shí)間應(yīng)測(cè)試要求,需要重復(fù)測(cè)試App安裝啟動(dòng),為了避免重復(fù)性的工作和節(jié)省時(shí)間,所以就想到了用 Fastlane 自動(dòng)化打包上傳到蒲公英方便測(cè)試安裝。

2.簡(jiǎn)介

Fastlane 是一套使用Ruby寫(xiě)的自動(dòng)化工具集,用于iOS和Android的自動(dòng)化打包、發(fā)布等工作,可以節(jié)省大量的時(shí)間。

3.安裝

3.1 安裝正確的Ruby版本,需要2.0及以上版本:

ruby -v
屏幕快照 2017-09-04 下午3.03.58.png

3.2 然后檢查 Xcode 命令行工具是否安裝:

xcode-select --install

報(bào)如下錯(cuò)誤,說(shuō)明已安裝:

屏幕快照 2017-09-04 下午3.04.13.png

3.3 通過(guò)RubyGem安裝 Fastlane 工具集:

sudo gem install fastlane

執(zhí)行命令時(shí),輸入用戶(hù)密碼,如下圖安裝完成:

屏幕快照 2017-09-04 下午3.24.50.png

4.配置

4.1 打開(kāi)終端,進(jìn)入你的工程目錄,然后執(zhí)行 fastlane init:

屏幕快照 2017-09-04 下午4.00.20.png

執(zhí)行過(guò)程中,需要輸入對(duì)應(yīng)的蘋(píng)果開(kāi)發(fā)賬號(hào)。接下來(lái),出現(xiàn)確認(rèn)提示,確認(rèn)無(wú)誤輸入y:

屏幕快照_2017-09-04_下午4_01_58.png

4.2 Fastlane 初始化完成后,工程目錄下會(huì)自動(dòng)生成 fastlane 文件夾,如下所示:

屏幕快照 2017-09-04 下午4.32.11.png
  • metadata: 目錄:存放 App 元數(shù)據(jù),包括 App 簡(jiǎn)介,Icon,Copyright 等;
  • screenshots: 目錄:顧名思義,存放 App store 中的截圖;
  • Appfile:用于指定 app_identifier, apple_id, team_id
  • Deliverfile:用于指定跟 App 版本發(fā)布相關(guān)的信息,除了 apple_identifier 外,還包括 submit_for_review, automatic_release 等可配置項(xiàng),基本覆蓋 iTunes Connect 里面的所有選項(xiàng)
  • Fastfile:用于編寫(xiě)邏輯腳本,使用 ruby 語(yǔ)言,例如首先執(zhí)行 cocoapods 更新第三方依賴(lài)庫(kù),然后執(zhí)行 pem 更新相關(guān)證書(shū),接著通過(guò) gym 來(lái)編譯并打包 ipa 文件,最后通過(guò) deliver 發(fā)布到 iTunes Connect 中,并提交審核。具體邏輯按照開(kāi)發(fā)者需求自行設(shè)計(jì)。

推薦使用Sublime Text工具打開(kāi) AppfileDeliverfileFastfile 三個(gè)配置文件,首次打開(kāi)是以文本格式顯示的,可設(shè)置文件默認(rèn)格式為Ruby。

進(jìn)入 fastlane 文件,執(zhí)行如下命令:

open -a /Applications/Sublime\ Text.app/ Appfile Deliverfile Fastfile
屏幕快照 2017-09-04 下午5.13.14.png

操作步驟:在Sublime Text 工作窗口,點(diǎn)擊右下角Plain Text區(qū)域,出現(xiàn)的下拉菜單中選擇Ruby,之后文件內(nèi)容將以Ruby語(yǔ)法格式打開(kāi),便于編輯查看。三個(gè)文件需要分別設(shè)置默認(rèn)格式。

屏幕快照 2017-09-04 下午5.08.08.png

4.3 安裝蒲公英的 Fastlane 插件

在終端中,輸入以下命令,即可安裝蒲公英的 fastlane 插件:

fastlane add_plugin pgyer

執(zhí)行過(guò)程中,出現(xiàn)確認(rèn)提示,確認(rèn)無(wú)誤輸入y,接下來(lái),需要輸入兩次用戶(hù)密碼即可。

稍等幾秒鐘,如果出現(xiàn)類(lèi)似下面的信息,就說(shuō)明安裝成功了:

屏幕快照 2017-09-04 下午5.31.16.png

5.執(zhí)行

5.1 在 Fastlane 配置蒲公英插件

首先,進(jìn)入工程目錄,并打開(kāi) Fastlane 的配置文件(一般在 fastlane/Fastfile),這里我們用 Sublime Text打開(kāi)。

然后,我們找到我們?cè)谟玫墓ぷ髁鳎╝ction),在 gym 指令后,加入蒲公英插件的配置信息。例如:

desc "發(fā)布 測(cè)試版本 到 蒲公英"
  lane :beta_pgy do    
    gym(export_method: "ad-hoc")
    pgyer(api_key: "d066f633dc2d970eb230dba7823ff022", 
      user_key: "4477d913a078c11df32be931523619dc", 
      update_description: "fastlane自動(dòng)打包上傳測(cè)試 ", 
      password: "123456", 
      install_type: "2")
end
屏幕快照 2017-09-04 下午5.08.09.png

注意:
以上的 api_keyuser_key,請(qǐng)開(kāi)發(fā)者在自己賬號(hào)下的 應(yīng)用管理 - App概述 - API 中可以找到,并替換到以上相應(yīng)的位置。password 為安裝時(shí),需要輸入的密碼,install_type 為安裝類(lèi)型。

5.2 打包并自動(dòng)上傳 App 到蒲公英

bundle exec fastlane beta_pgy

執(zhí)行過(guò)程中,如果出現(xiàn)如下錯(cuò)誤,需要在工程目錄下的Gemfile文件中添加如下信息:

gem 'cocoapods'
屏幕快照 2017-09-04 下午5.18.09.png

保存文件后,重新執(zhí)行下面的命令:

bundle exec fastlane beta_pgy

稍等幾十秒,最后如果出現(xiàn)類(lèi)似下面的信息,就說(shuō)明Fastlane打包上傳成功了,可以進(jìn)入蒲公英【我的應(yīng)用】掃碼下載。打包上傳成功截圖如下:

屏幕快照 2017-09-04 下午6.27.57.png

5.3 配置文件

有時(shí)候我們希望把賬號(hào)信息、更新描述和版本號(hào)等信息單獨(dú)放在一個(gè)配置文件。在這里Fastlane給我們提供了相應(yīng)的解決方案。

我們可以在工程目錄下創(chuàng)建一個(gè)名為 .env 的文件,自定義所需的臨時(shí)變量,然后Fastlane的三個(gè)配置文件(AppfileDeliverfileFastfile)分別從.env文件中讀取配置信息。

關(guān)于ENV用法可參考以下鏈接:
https://docs.fastlane.tools/advanced/#environment-variables
https://github.com/bkeepers/dotenv

.env 文件為影藏文件,可使用如下命令查看:

ls -a

截圖如下:

屏幕快照 2017-09-05 下午3.54.25.png

下面給出的 .env 文件配置可做參考:
.env :

#APP唯一標(biāo)識(shí)符
APP_IDENTIFIER = "xxx.xxx.TestGitProject"

#發(fā)布版本號(hào)
APP_VERSION_RELEASE = "1.1.0"

#新版本修改記錄
RELEASE_NOTES = "1) 升級(jí)測(cè)試第一行\(zhòng)n2) 升級(jí)測(cè)試第二行"

#蒲公英 更新描述
PGY_UPDATE_DESCRIPTION = "fastlane自動(dòng)打包上傳測(cè)試"

#自動(dòng)提交審核
SUBMIT_FOR_REVIEW = false

#審核通過(guò)后立刻發(fā)布
AUTOMATIC_RELEASE = false

#蘋(píng)果開(kāi)發(fā)者賬號(hào)
APPLE_ID = "xxx@xxx.xxx"

#蘋(píng)果開(kāi)發(fā)者帳號(hào)密碼
FASTLANE_PASSWORD = "xxxxxx"

#套裝ID
TEAM_ID = "94xxxxx02"

#應(yīng)用名稱(chēng)
SCHEME_NAME = "TestGitProject"

#APP元數(shù)據(jù)及截圖存放路徑
METADATA_PATH = "./metadata/TestGitProject"
SCREENSHOTS_PATH = "./screenshots/TestGitProject"

#APP元數(shù)據(jù)及截圖下載時(shí),直接覆蓋原有數(shù)據(jù),不詢(xún)問(wèn)
DELIVER_FORCE_OVERWRITE = true

AppfileDeliverfileFastfile配置文件修改如下:
Appfile

app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app

apple_id ENV['APPLE_ID'] # Your Apple email address

team_id ENV['TEAM_ID'] # Developer Portal Team ID

Deliverfile :

app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app

username ENV['APPLE_ID'] # your Apple ID user

Fastfile :

  desc "發(fā)布 測(cè)試版本 到 蒲公英"
  lane :beta_pgy do    
    gym(scheme: ENV['SCHEME_NAME'], 
      export_method: "ad-hoc",
      silent: true,  # 隱藏沒(méi)有必要的信息
      clean: true  # 在構(gòu)建前先clean
      )

    pgyer(api_key: ENV['PGY_API_KEY'], 
      user_key: ENV['PGY_USER_KEY'], 
      update_description: ENV['PGY_UPDATE_DESCRIPTION'], 
      password: "123456", 
      install_type: "2")
  end

配置文件截圖如下:

屏幕快照 2017-09-05 下午3.43.06.png
屏幕快照 2017-09-05 下午3.43.17.png
屏幕快照 2017-09-05 下午3.42.22.png
屏幕快照_2017-09-05_下午3_43_28.png

修改完上述配置文件后,重新執(zhí)行以下命令:

bundle exec fastlane beta_pgy

6.其他

Fastlane 如何實(shí)現(xiàn)多 Target 自動(dòng)化打包發(fā)布,以及如何配置 Appfile、Deliverfile 和 Fastfile 等配置文件,發(fā)布和構(gòu)建版本號(hào)自增,修改更新內(nèi)容,自動(dòng)上傳蘋(píng)果商店和自動(dòng)提交審核,可參考另一篇文章:Fastlane 實(shí)現(xiàn)多 Target 自動(dòng)化打包發(fā)布

參考鏈接:

  1. ?Fastlane 使用中遇到的問(wèn)題
  2. 使用 Fastlane 上傳 App 到蒲公英
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容