在項目中,依賴開發手動打包效率低且版本控制不穩定。 測試人員需要掌握獨立環境部署能力才是正途。
一、選擇Mac系統的原因
因為要打包IOS的APP, IOS的編譯環境是Xcode,這個需要安裝在Mac系統上。 所以如果要編譯IOS並打包,則要使用Mac系統。
二、Jenkins分布式構建
1、在使用jenkins自動構建時,我們可能包含服務端、前端、客戶端APP(安卓和IOS)等編譯構建。 服務端語言又分為java、.net、.net core 、C++等,每種編程語言的編譯環境及方法均不一樣。
如果在一個服務器上搭建環境,就會很雜亂。需要編譯構建的程序多了,構建服務器本身的資源使用也會成為瓶頸。 所以后期發展成熟,建議使用分布式構建。 jenkins支持Master/Slave的主從架構來實現。
2、主從架構
1、jenkins服務器為主節點,處理調度構建作業。
2、主機進行構建任務分發,從機來具體執行
3、監視從機節點,記錄從機的構建結果
主從最終實現的效果圖: (本期主要講述APP打包,主從架構概過,感興趣的同學可以自行百度實踐)
三、APP打包環境准備
1、jenkins環境 (有文件安裝和命令行安裝,推薦使用命令行安裝)
a、安裝jenkins前需要安裝jdk,版本1.8以上
b、文件安裝:官網下載 https://jenkins.io/zh/download/ (根據搭建服務器環境自由選擇,本次我們需要構建IOS的IPA包,選擇 Mac os)
命令安裝:
1、先需要安裝軟件包home brew,直接在終端對話框中敲 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、查看brew是否安裝成功: brew -v
能顯示版本號即安裝成功
3、直接命令行安裝jenkins : brew install jenkins (因為我已安裝,所以顯示此提示)
c、在瀏覽器中輸入http://localhost:8080,首次安裝應該會出現如下界面,這里需要你去找到Jenkins的初始密碼。 密碼在如下的 紅色提示路徑下
d、后續都采用默認安裝,即可完成安裝
2、xcode下載安裝 (xcode可以直接在appstore中下載及安裝,此文件有點大 有接近10g)
3、安卓打包工具 android-sdk安裝:
a、Android-sdk 資源站點 http://www.androiddevtools.cn ,一直下一步安裝
b、android-sdk安裝完成后,找到android-sdk/tools 安裝路徑,雙擊 android程序,喚出SDK Manager
c、更新sdk組件 (由於谷歌被牆了,所以某些sdk無法更新,需要設置國內鏡像站點)
Mac頂部菜單點擊Android SDK Manager -> Preferences
HTTP Proxy Server填寫:mirrors.neusoft.edu.cn
HTTP Proxy Port填寫:80
勾選Force https:// ,然后點擊“Close”
Mac頂部菜單點擊Tools -> Manage Add-on Site,選擇右側“User Defined Sites”:
把下面這堆網址:
http://mirrors.neusoft.edu.cn/android/repository/addon-6.xml
http://mirrors.neusoft.edu.cn/android/repository/addon.xml
http://mirrors.neusoft.edu.cn/android/repository/extras/intel/addon.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-tv/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-wear/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/android/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/google_apis/sys-img.xml
http://mirrors.neusoft.edu.cn/android/repository/sys-img/x86/addon-x86.xml
http://mirrors.neusoft.edu.cn/android/repository/addons_list-2.xml
http://mirrors.neusoft.edu.cn/android/repository/repository-10.xml
全手動New加進去,然后就可以下載了,點擊
四、jenkins中環境變量配置
1、Android環境變量配置 ,在 系統管理-系統設置中添加 Android_Home
2、gradle配置
在 系統管理-全局工具配置中 添加一個gradle版本。 我們編譯使用的V4.6
五、Android打包工程配置
1、創建一個自由風格的工程
2、舊的構建數據丟棄
3、源碼拉取,可以選擇svn或者git,看項目使用的配置管理工具
4、設置構建觸發策略,我這里選擇的定時觸發(6點和12點自動構建打包)
5、編譯構建並將編譯的包放到共享目錄
1、測試環境或線上環境的編譯任務assembleBetaDebug,可以咨詢安卓開發。(如果開發沒有設置打包渠道,可以手動在代碼路徑 app/build.gradle下加入此代碼)
2、添加一個Execute shell,將生成的apk包轉移到共享目錄下。 (大多人使用的windows的辦公電腦,取包不方便,放到共享目錄后 取包很方便了)
cp ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android_new_trunk.apk
mv ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android/trunk/xxx-${BUILD_ID}.apk
放到共享目錄后,取包方便很多 、 另外也可以考慮將包放到蒲公英平台或者生成固定二維碼,直接下載。
六、IOS打包工程配置
1、前面配置省略,跟安卓類似
2、使用shell腳本編譯 (jenkins對於xcode插件兼容性不好,所以建議調用shell執行xcodebuild腳本來編譯)
第一個的shell是編譯xcodebuild,第二個shell是變換共享目錄
#!/usr/bin/env bash #xcodebuild clean -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive #Release xcodebuild -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive xcodebuild -exportArchive -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -exportPath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales_debug" -exportOptionsPlist '/Users/mjb/.jenkins/workspace/mjd-app-ios/build/ExportOptions.plist' -allowProvisioningUpdates
注意,在編譯前需要將這兩個文件復制到對應目錄
最后實施完成的效果 :
安卓和IOS都能成功打包 apk和ipa了