中小團隊快速實現(xiàn)持續(xù)交付iOS版

時間來到8102年,但是很多中小團隊還是缺少持續(xù)交付,打包發(fā)布還是處于原始手打階段使得工程師們不能安安心心寫點代碼,明明今天還有很多bug需要修改,突然測試工程師跑過來說趕緊給我出一個包,這時候你不得不停下手頭的工作,默默的給他打個包。

另外對于敏捷開發(fā)的團隊來說,產品需要隨時跟進目前進度,或者“老板們”需要體驗一下最新的成果,有一個便捷的地方隨時可以安裝最新的包對于團隊來說也是無比重要的。

目標

測試:可以自己隨時通過jenkins構建最新包,然后通過一個小工具直接裝最新的版本。

產品:可以隨時通過小工具查看,最新的研發(fā)成果,隨時安裝最新的版本。

好了,說了持續(xù)交付的重要性,那么準備下材料吧:jenkins+git服務器(我們現(xiàn)在用的gitlab,下文都直接說gitlab)+fastlane+蒲公英+mac機器。當然還有很多其他方案,譬如最簡單的jenkins+git服務器也能搞定,多加一個fastlane是未來便于擴展,蒲公英方便安裝,就看你要做到什么程度。

po一個效果圖:

mac機器

關于mac機器有很多種選擇,公司如果有閑置mac mini,iMac之類的最好直接利用,黑蘋果或者臺式機裝虛擬機再裝mac os費事費力,花費的人力物力已經(jīng)超出閑置mac mini,iMac了。

因為這兩種情況我都經(jīng)歷過,以前在Camera360就用過服務端淘汰下來的1U的服務器搭建過虛擬機,不過那個機器是64核,128G的內存,才能撐起Camera360這種體量的工程,普通mac mini打個包要耗費40分鐘,如果在測試階段,測試每天要包的頻次變大時,很難負荷,利用1U的高性能機器可以縮短至20分鐘。土豪團隊可以考慮高配版iMac或者垃圾桶。

有了Mac機器就是配置各種環(huán)境,首先必備的是Xcode,然后是fastlane

fastlane

安裝

sudo gem install fastlane

安裝蒲公英的 fastlane 插件

fastlane add_plugin pgyer

然后進項目目錄進行初始化

fastlane init

執(zhí)行上述命令后,會在我們的項目目錄下面生成一個 fastlane 目錄,我們唯一關心的就是其配置文件 Fastfile ,配置gym和pgyer參數(shù),更多參數(shù)可以參考gym文檔pgyer文檔

platform :ios do
   desc "發(fā)布 測試版本 到 蒲公英"
   lane :pgy do
   #把最近的一個git commit當做當前版本的描述
   git_log = sh("git log --no-merges -1 --pretty=format:'# %ai%n# %B by %an'")
   gym(
      scheme: "iospgy",
      export_method: "enterprise",
      output_directory: "output",
      configuration: "Release"
   )
   pgyer(
      api_key: "811e984eb5e760bb7f2885484c6c4edb",
      user_key: "15943af593e531aef0b1f7d6c70d4131",
      update_description: git_log
   )
   end
end

配置完了之后就可以試試用命令打包,在項目根目錄執(zhí)行

fastlane pgy

jenkins和gitlab

這兩個東西的安裝網(wǎng)上有一大堆教程,如果公司有運維,可以直接讓他們幫忙裝,如果沒有,自己用的云服務器廠商一般也提供docker一鍵安裝。如果也沒有云服務器,本機裝一個也很快。

配置jenkins節(jié)點

有兩個關鍵點需要注意一下:

1.jenkins和你準備拿來做打包機器的mac電腦是否在同一個網(wǎng)絡,如果不在,最好通過vpn等方式連接,否則用jenkins自帶的javaweb連接不穩(wěn)定,后期維護相當吐血。

2.如果執(zhí)行fastlane等命令報錯“fastlane: command not found”,則需要配置一下PATH,紅框框內容。

PATH可以在命令行輸入

echo $PATH

得到值之后拷貝進去就可以了

配置好jenkins節(jié)點之后就可以新建項目了

然后配置項目的git地址

根據(jù)項目需求配置觸發(fā)規(guī)則,我現(xiàn)在是用的定時任務,每天6點,12點,19點自動觸發(fā)打包,定時規(guī)則可以谷歌搜“jenkins 定時任務”

然后配置執(zhí)行腳本,一般選用shell腳本

最后寫具體的shell執(zhí)行代碼就可以了

蒲公英

由于蒲公英沒有iOS版本,所以只有根據(jù)文檔自己開發(fā)一個,否則的話自動打完包還需要把二維碼發(fā)出來給需要的人掃,相當不方便。根據(jù)文檔,蒲公英提供接口,讓你訪問自己所有的上傳的APP,并且根據(jù)安裝APP文檔,可以組裝好相應的協(xié)議。這樣就可以實現(xiàn),通過一個APP安裝我們相應版本的功能了。

為了方便大家使用,可以參考我自己開發(fā)的一個iOS版蒲公英。clone下來改一下apikeyappkey就可以直接使用啦。

遠程構建

要使用jenkins遠程構建首先需要安裝一個插件Build Authorization Token Root Plugin,如下圖:

安裝完畢后,去自己的賬戶下拿token

然后點開jenkins上的工程勾選允許遠程構建,并且填寫上一步拿到的token

最后在項目里面發(fā)起相應的http請求就可以了,具體格式在勾選遠程構建的選項下面可以看到。

注:遠程觸發(fā)jenkins是需要授權的,具體可以通過charles抓手動點擊觸發(fā)jenkins構建時的http頭可以拿到,或者可以直接寫代碼

let user = "your username"

let password = "your password"

let credentialData = "\(user):\(password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!

let base64Credentials = credentialData.base64EncodedString()

let headers = ["Authorization": "Basic \(base64Credentials)"]

Alamofire.request("place your url", method: .get, parameters: nil,encoding: URLEncoding.default, headers: headers) .responseJSON { response in

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容