iOS Fastlane自動(dòng)化打包(1) 安裝和打包IPA
iOS Fastlane自動(dòng)化打包(2) 自動(dòng)上傳IPA到蒲公英
前文介紹了如何用Fastlane
打包以及上傳蒲公英坞生,大大簡化了提交企業(yè)包的步驟添忘,但是作為一個(gè)強(qiáng)迫癥吮炕,還覺得不完美。做到這個(gè)程度,還是需要守在打包機(jī)面前暴备,等待打包結(jié)果。最理想化的場景就是们豌,打包成功或者失敗都推送到手機(jī)上涯捻,不需要人工去查看打包結(jié)果。
效果如下:
其實(shí)從圖上也可以看出來望迎,我最終使用的是IFTTT完成推送障癌。
什么是 IFTTT?
簡單說 IFTTT 是一個(gè)服務(wù)(也就是我們說的「智能管家」)辩尊,對(duì)于這個(gè)服務(wù)涛浙,我們只需要設(shè)置規(guī)則,告訴它「如果 A 完成了事情 1摄欲,那么就讓 B 完成事情 2」轿亮,它就會(huì)忠實(shí)地檢查這些規(guī)則,并幫我們執(zhí)行對(duì)應(yīng)的任務(wù)胸墙。
在 IFTTT 中我注,我們可以通過 If This Then That 的句式,分別設(shè)置 This(條件)和 That(動(dòng)作)迟隅,IFTTT 會(huì)像忠實(shí)的管家一樣但骨,自動(dòng)檢查條件是否達(dá)成励七,一旦條件被觸發(fā),它就會(huì)自動(dòng)執(zhí)行條件對(duì)應(yīng)的動(dòng)作奔缠,有了這個(gè)智能管家掠抬,我們就能真正地玩轉(zhuǎn)智能生活了。
詳細(xì)的介紹可以參考少數(shù)派的文章:玩轉(zhuǎn) IFTTT校哎,互聯(lián)網(wǎng)自動(dòng)化也可以很簡單
雖然IFTTT可以做很多事情两波,但是我們可以不用管它能做到什么事情,也不用管它的原理贬蛙。因?yàn)槲覀冞@里只需要利用它給自己發(fā)通知雨女,只需要完成利用它給自己發(fā)通知的就行了,按照下面的步驟做即可
首先鏈接IFTTT的webhooks服務(wù)阳准,得獲取api_key( 步驟見:IFTTT開啟Webhooks)
event
就是觸發(fā)事件氛堕,也就是當(dāng)你調(diào)用這個(gè)接口的時(shí)候,會(huì)觸發(fā)IFTTT的動(dòng)作(比如發(fā)郵件野蝇、發(fā)通知之類的)讼稚,同時(shí)IFTTT還提供了三個(gè)可選值可以根據(jù)需要傳
在IFTTT設(shè)置好event以及收到event進(jìn)行的操作。
利用fastlane提供的IFTTT的action
ifttt(
api_key: "...",
event_name: "...",
value1: "foo",
value2: "bar",
value3: "baz"
)
Fastfile
文件代碼:
default_platform(:ios)
platform :ios do
desc "***"
lane :pkg do |options|
# 獲取當(dāng)前目錄下的plist文件中的版本號(hào)
version = get_info_plist_value(path: "./RealEstateManagement/Info.plist", key: "CFBundleShortVersionString")
configuration = options[:to]
# 打包
gym(
# 打包的target名稱
scheme:"RealEstateManagement",
# 打包方式 企業(yè)版
export_method:"enterprise",
output_directory:"/Users/Javen/Desktop/fastlane",
output_name:"***_#{version}_#{configuration}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa",
export_xcargs: "-allowProvisioningUpdates",
)
notifyMsg = ''
#上傳蒲公英
if configuration == "test"
puts "\033[31m打包完成绕沈,正在上傳測試蒲公英\033[0m\n"
pgyer(
api_key: "***",
user_key: "***"
)
notifyMsg = "
HD-CRE 統(tǒng)一版本測試版 已發(fā)布!
版本號(hào): #{version}
iOS: http://www.pgyer.com/***
Android: http://www.pgyer.com/***"
end
if configuration == "release"
puts "\033[31m打包完成锐想,正在上傳正式蒲公英\033[0m\n"
pgyer(
api_key: "***",
user_key: "***"
)
notifyMsg = "
HD-CRE 統(tǒng)一版本正式版 已發(fā)布!
版本號(hào): #{version}
iOS: http://www.pgyer.com/***
Android: http://www.pgyer.com/***"
end
puts notifyMsg
ifttt(
api_key: "***",
event_name: "pkg",
value1: notifyMsg,
# value2: "bar",
# value3: "baz"
)
end
end
我這里event_name是英文的,如果你設(shè)置的event是中文的話乍狐,由于是拼接在URL里面的赠摇,直接用中文會(huì)報(bào)錯(cuò)。需要對(duì)字符串進(jìn)行轉(zhuǎn)碼浅蚪,例如event_name: URI::escape("打包通知:")
到這里就完成了自動(dòng)打包以及打包結(jié)果推送通知到手機(jī)所有內(nèi)容藕帜。
還差安裝Jenkins以及配合fastlane根據(jù)git標(biāo)簽一鍵打包的內(nèi)容,效果如下圖惜傲。這個(gè)內(nèi)容比較多洽故,后續(xù)另開一篇寫。