iOS+Fastlane自動(dòng)打包、發(fā)布測(cè)試、消息通知,完美結(jié)合!

iOS打包煩不煩?偶爾一次還好,但是一天三五次測(cè)試打包肯定讓人煩,不信你試試!

曾經(jīng)我以為自動(dòng)化打包很沒(méi)必要,所以一直都是Xcode中規(guī)中矩的打包操作然后發(fā)布;而如今我正在經(jīng)歷著一天之中反復(fù)的測(cè)試、回歸,有時(shí)一天打包發(fā)布個(gè)三五次,不斷的來(lái)回告訴測(cè)試妹子打包發(fā)布了去下載吧,有時(shí)妹子也煩。

同時(shí)不斷的重復(fù)性的build、 archive、導(dǎo)出、發(fā)布測(cè)試平臺(tái)實(shí)屬枯燥。再加上電腦卡、反應(yīng)慢,打個(gè)包一二十分鐘過(guò)去了也耽誤不少時(shí)間,所以自動(dòng)化打包迫在眉睫。

所以我們要實(shí)現(xiàn)一行命令自動(dòng)打包、發(fā)布、然后自動(dòng)發(fā)消息通知測(cè)試。

最后我們選擇了Fastlane 、 蒲公英發(fā)布測(cè)試;

現(xiàn)在我們只需要一行命令搞定讓枯燥的打包自動(dòng)進(jìn)行,自動(dòng)發(fā)布,自動(dòng)發(fā)消息通知測(cè)試,而且整過(guò)流程用時(shí)幾分鐘就能搞定,比以前大大的少了很多,真是大大的提高工作效率;

我們操作路線: Fastlane自動(dòng)打包 -> 蒲公英發(fā)布測(cè)試 ->釘釘

  • Fastlane 實(shí)現(xiàn)自動(dòng)打包,自動(dòng)發(fā)布到蒲公英平臺(tái)

  • 蒲公英:App發(fā)布平臺(tái);

  • 釘釘,建立的開發(fā)測(cè)試群,每次自動(dòng)打包發(fā)版后,系統(tǒng)機(jī)器人就會(huì)自動(dòng)提示如下:

是不是很方便?群里的每個(gè)人都知道了,再也不用我們?nèi)ネㄖ耍?/p>

接下來(lái)就按步驟去實(shí)現(xiàn)它吧。。。

Fastlane安裝與配置

Fastlane基于ruby環(huán)境自動(dòng)化工具集,它不是一個(gè)工具,它是一系列的工具的集合,基本上涵蓋了打包,簽名,測(cè)試,部署,發(fā)布,庫(kù)管理等等移動(dòng)開發(fā)中涉及到的內(nèi)容。 同時(shí)該套件也支持與 Jenkins 、CocoaPods、xctools 等其他第三方工具的集成。

  • 1、安裝 Xcode command line tools:

xcode-select --install

安裝過(guò)會(huì)提示已經(jīng)安裝;

xcode-select: error: command line tools are already installed, use "Software Update" to install updates
  • 2、安裝Fastlane

sudo gem install fastlane

Successfully installed fastlane-2.193.1
Parsing documentation for fastlane-2.193.1
Done installing documentation for fastlane after 5 seconds
1 gem installed
  • 3、fastlane 初始化

fastlane init

cd 打開工程所在目錄,執(zhí)行fastlane init出現(xiàn)如下提示:

[13:21:46]: What would you like to use fastlane for?
1.   Automate screenshots
2. ??  Automate beta distribution to TestFlight
3.   Automate App Store distribution
4.   Manual setup - manually setup your project to automate your tasks

選擇4 ,手動(dòng)設(shè)置工程文件;然后一路enter

fastlane init.png

然后可看到工程目錄下多了幾個(gè)文件:

appfile.png

其中Appfile、Fastfile就是我們需要修改的文件;

  • Appfile:App相關(guān)的信息,寫以下三項(xiàng)就可以:
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
  • Fastfile:描述打包相關(guān)的配置信息,初始內(nèi)容如下:
default_platform(:iOS)
platform :iOS do
  desc "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end
end

一個(gè)lane可理解為就是一個(gè)任務(wù),我們打包發(fā)布到蒲公英是一個(gè)任務(wù),打包發(fā)布到App Store也是一個(gè)任務(wù);
lane中可添加多個(gè)action,也就是具體的操作,比如打包方法操作是一個(gè)action,發(fā)布蒲公英操作也是一個(gè)action;

Fastlane本身自有的一些lane,可以在不同的 階段做一些額外的操作:

before_all,就是在執(zhí)行一次腳本之前首先執(zhí)行的代碼,我們可以在這里面執(zhí)行一些公共的東西,比如git_pull,cocoapods。

after_all, 成功結(jié)束之后,處理共有的后置邏輯。

before_each,每次執(zhí)行 lane 之前都會(huì)執(zhí)行一次。

after_each,每次執(zhí)行 lane 之后都會(huì)執(zhí)行一次。

error,在執(zhí)行上述情況任意環(huán)境報(bào)錯(cuò)都會(huì)中止并執(zhí)行一次。

我要發(fā)布到蒲公英,所以完整的配置如下:
default_platform(:iOS)
platform :iOS do
  lane :hs_test do
    # add actions here: https://docs.fastlane.tools/actions
    gym(
          clean: true,
          output_directory: './fastlane/build',
          output_name:"XX.ipa",
          scheme: 'XXX',
          configuration: 'Debug',###########
          # sdk:"iOS 12.0",
          # archive_path:"./fastlane/Archive",
          include_symbols:true,
          export_options: {
            method: 'development',#測(cè)試包
            provisioningProfiles: {
                "com.xxxx.xxx" => "20210906_dev" #測(cè)試打包描述文件
            },
          }
    )
    
    updateVersionDes = "提到蒲公英的版本更新信息;"
    pgyer(
        api_key: "蒲公英API Key", 
        user_key: "蒲公英user_key"
        update_description: updateVersionDes
    )
    end
end

然后再終端中輸入

fastlane hs_test (可理解為就是我們的任務(wù)名)

然后剩下的就不用我們管了,它會(huì)自動(dòng)的幫我們處理余下的所有工作;

參數(shù)解釋:

  • gym:fastlane 封裝的打包方法、會(huì)自動(dòng)處理打包、簽名等操作;
    配置項(xiàng)
    clean:每次執(zhí)行前是否清空工程;
    output_directory:輸出文件目錄
    output_name:App名字’
    scheme:App scheme
    configuration:The configuration to use when building the app. Defaults to 'Release'
    export_options:導(dǎo)出時(shí)配置項(xiàng),及發(fā)布證書相關(guān);

我用到的不多,其他參數(shù)還很多具體參看官方文檔吧。

至此關(guān)于Fastlane 配置完成了,現(xiàn)在就可以愉快的打包了,然后在工作目錄中看到生成的IPA包。

蒲公英設(shè)置

蒲公英支持Webhook機(jī)制,可以將事件消息通知分發(fā)出去;所以當(dāng)我們發(fā)布新版本時(shí)可以給釘釘或微信發(fā)送消息,通知App版本更新;

打開指定的應(yīng)用,選擇【內(nèi)測(cè)分發(fā)】-【W(wǎng)ebhook設(shè)置】創(chuàng)建新的Webhook

釘釘設(shè)置

打開釘釘群【設(shè)置】-【智能群助手】-創(chuàng)建機(jī)器人

復(fù)制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX,到蒲公英Webhook URL ;

至此所有配置算是完成了,現(xiàn)在我們就可以實(shí)現(xiàn)一行命令打包,然后去逍遙自在了_;

APP自動(dòng)化方面操作功能很強(qiáng)大,能做的還有很多,今天只是初步實(shí)現(xiàn)測(cè)試環(huán)境自動(dòng)化打包,更高級(jí)的用法還有待繼續(xù)摸索。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容