【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)
本文來自網易云社區
作者:孫嬌
嚴選iOS客戶端的現有打包方式是通過遠程連接打包機執行腳本去打包,打完包會輸出相應的ipa的二維碼,掃一掃二維碼可以安裝,但是隨著測試隊伍的壯大,外包同學越來越多,在打包機輸入命令的方式可用度越來越低,手動輸入命令的缺陷有:
1、必須手動輸入分支名,和buildversion(手動計算自增)
2、遠程連接打包機不穩定,經常斷線,影響效率
3、切換分支不方便(還經常切換失敗)
基于以上的各個問題,我決定改造一下現有的打包方式,讓任何一個新來的測試同學都可以直接動手自己打包,最終定下的方案是:底層使用fastlane來執行打包(不要問我選它的原因,畢竟github上有2w的star,好處自然是多到不用說),然后使用Jenkins來執行打包腳本,最終依然生成二維碼以供方便的掃碼安裝。
因此主要步驟分為:
1、安裝fastlane,編寫打包腳本(網上的教程多到數不過來,請自行搜索),主要的目錄結構如下:
主要的就是Appfile和Fastfile文件,Appfile里主要存寫的是app包的bundleID,teamID等內容(內容涉及app機密就不貼出來了),Fastfile里主要是存儲打包的腳本,我的腳本參考:
default_platform:iosPROJECT_FILE_PATH?=?"./NeteaseYanxuan.xcodeproj"PLIST_FILE_PATH?=?"NeteaseYanxuan/NeteaseYanxuan.plist"OUTPUT_DIRECTORY?=?"/usr/local/var/www/Yanxuan"platform?:ios?dobefore_all?do?|lane,?options|git_switch_branch(branch:?options[:branch])git_pullend??#debug?Buildlane?:debug?do?|options|update_info_plist(plist_path:?"#{PLIST_FILE_PATH}",display_name:?"網易嚴選push" )update_app_identifier(xcodeproj:?PROJECT_FILE_PATH,plist_path:?"#{PLIST_FILE_PATH}",app_identifier:?"com.ntes.yanxuan")??branch_dir?=?options[:branch]version_number?=?options[:version]??increment_version_number(version_number:?"#{version_number}")gym(???????clean:?"true",scheme:?"NeteaseYanxuan",?export_method:"enterprise",??????export_options:?{provisioningProfiles:?{?"com.ntes.yanxuan"?=>?"YanXuan_enterprise",??????????"com.ntes.yanxuan.ServiceExtension"?=>?"yanxuan_pushextension",??????????"com.ntes.yanxuan.todayExtension"=>?"yanxuantodayExtension"}?},output_directory:?"#{OUTPUT_DIRECTORY}/#{branch_dir}",output_name:?"NeteaseYanxuan.ipa")end end還有一個非常好用的小工具可以推薦, 關于切換分支的一個fastlane的插件,奉上github地址:fastlane切換分支插件,安裝方法和使用方法上面有很詳細的介紹,但是我在安裝中遇到一個坑,就fastlane install_plugins安裝之后,顯示安裝成功,但是使用的過程中一直報錯,說找不到git_switch_branch,找了好久的原因最后只能將這個插件加到gemFile里去,然后手動執行安裝,具體步驟:
將“gem 'fastlane-plugin-git_switch_branch”加到Gemfile里
然后執行bundle install
然后再去執行fastlane ?laneName去打包,就可以正常的使用這個插件了!?
2、fastlane的打包腳本只能輸出ipa的iOS包,這個包是沒有辦法直接安裝的,需要對生成對ipa包裝一下,生成可以掃描的二維碼,這樣的二維碼每個人都可以直接掃描二維碼然后下載安裝,具體的方法是本地寫好一個靜態頁面,每次將新生成的ipa去替換這個靜態頁面里的各個參數,安裝客戶端所需要的plist文件我們是存放在七牛上去管理,放在哪個平臺是無所謂的,全憑你的資金決定!
這部分使用shell去做的,在腳本里調用fastlane去打包,然后再去替換各個參數,具體代碼參考如下:
腳本里需要用到qiuniupy,所以你的機器還是要安裝好python相關的環境,安裝的過程中遇到缺啥就直接安裝啥,但是這個過程中我也遇到了一個坑,我pip install qiniu系統提示我安裝成功,import的時候一直提示沒有這個module,最終還是通過系統自帶的easy_install qiniu來安裝成功的。
到了這一步,所有的腳本都準備完成了,可以先在命令行里執行這個打包腳本,看是否能打包成功,到這步就成功了一半啦~~
3、有了腳本,如何方便的執行腳本,這時候就是Jenkins上場的時候到啦,Jenkins的安裝就不多說了,網上的資料一抓一大把,但是!但是!但是!
Mac的同學請注意!注意!意!在Mac上安裝Jenkins要額外關注權限的問題,我曾經就因為這個問題耗費了好幾個美妙的夜晚,抓耳撓腮的解決權限的問題,各種不能訪問,各種不能執行。發生這種問題的前提是下載和安裝的從jenkins官網下載的pkg安裝包,安裝后會直接啟動jenkins的web容器,然后你會發現jenkins的目錄是默認安裝在/Users/Shared/jenkins的(就是共享文件夾),也就是在你的用戶目錄之外,好像這時候Jenkins各種權限都沒有,就各種執行失敗了。解決辦法就是盡量使用命令行安裝,然后自己創建Jenkins的配置文件去啟動Jenkins,那么一切都是受你的控制啦~~
配置文件的路徑:/Library/LaunchDaemons,在這個路徑下創建:org.jenkins-ci.plist,配置內容如下:
其中的JENKINS_HOME 就是你的路徑,我這里放在了文稿下,因為我的其他腳本也放在文稿下,避免出現其他權限問題一了百了,放在同一文件夾下,解決所有問題。
配置完成啟動Jenkins,接下來創建job的步驟網上的教程很多也很簡單,就直接創建一個,我這邊就不多說了。
主要是配置可執行的腳本,我的配置內容如下:
到此所有打包的腳本,執行都準備完成了,包生成的文件是存放在你的打包機上的,如何讓其他用戶能直接通過域名訪問你的打包機器來獲取包的內容呢,這時候你就需要在你的機器上配置一下Nginx,Nginx的配置教程也很簡單,網上的教程也很多,我這邊就不贅述了 ,配置完Nginx,其他用戶就可以通過域名去訪問你的打包文件啦~~
最終打包生成的結構如下所示:
用戶打開這個html文件,就可以直接掃碼二維碼去安裝最新的iOS測試包啦,頁面效果如下:
哈哈哈哈,頁面是不是很美膩啊(已經把我會寫的前端代碼全都用上去啦)~~~
最終我們的一鍵打包功能就完成了,任何一個新來的同學都可以在Jenkins上去操作打包了,只要勾選各個參數,然后去點擊立即構建,等打包完去收割二維碼就可以了,簡單方便。。。
網易云免費體驗館,0成本體驗20+款云產品!
更多網易研發、產品、運營經驗分享請訪問網易云社區。
相關文章:
【推薦】?消息推送平臺高可用實踐(上)
【推薦】?在Android中使用Protocol Buffers(中篇)
【推薦】?使用QUIC
轉載于:https://www.cnblogs.com/163yun/p/9680960.html
總結
以上是生活随笔為你收集整理的【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 习题3-11 Kickdown UVA
- 下一篇: Linux下Mysql安装(RPM安装)