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è)配置文件(Appfile卖毁、DeliverfileFastfile)分別從.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)系作者
  • 序言:七十年代末站玄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子濒旦,更是在濱河造成了極大的恐慌株旷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異晾剖,居然都是意外死亡锉矢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)齿尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沽损,“玉大人,你說(shuō)我怎么就攤上這事循头∶喙溃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵卡骂,是天一觀的道長(zhǎng)国裳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)全跨,這世上最難降的妖魔是什么缝左? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮浓若,結(jié)果婚禮上渺杉,老公的妹妹穿的比我還像新娘。我一直安慰自己挪钓,他們只是感情好少办,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著诵原,像睡著了一般英妓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绍赛,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天蔓纠,我揣著相機(jī)與錄音,去河邊找鬼吗蚌。 笑死腿倚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚯妇。 我是一名探鬼主播敷燎,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箩言!你這毒婦竟也來(lái)了硬贯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陨收,失蹤者是張志新(化名)和其女友劉穎饭豹,沒(méi)想到半個(gè)月后鸵赖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拄衰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年它褪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翘悉。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茫打,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妖混,到底是詐尸還是另有隱情老赤,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布源葫,位于F島的核電站,受9級(jí)特大地震影響砖瞧,放射性物質(zhì)發(fā)生泄漏息堂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一块促、第九天 我趴在偏房一處隱蔽的房頂上張望荣堰。 院中可真熱鬧,春花似錦竭翠、人聲如沸振坚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渡八。三九已至,卻和暖如春传货,著一層夾襖步出監(jiān)牢的瞬間屎鳍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工问裕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逮壁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓粮宛,卻偏偏與公主長(zhǎng)得像窥淆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子巍杈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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