一、簡述
公司特意配了一臺mac機給測試用,并且打包發(fā)布這些功能都要在這臺測試機上完成,老大特意讓我去研究一下jenkins實現(xiàn)自動化打包,好吧,那就去看吧。
百度搜一下,Mark一下簡介:jenkins是一個廣泛用于持續(xù)構(gòu)建的可視化web工具,持續(xù)構(gòu)建即各種項目的”自動化”編譯、打包、分發(fā)部署。jenkins可以很好的支持各種語言(比如:Java, c#, PHP等)的項目構(gòu)建,也完全兼容ant、maven、gradle等多種第三方構(gòu)建工具,同時跟svn、Git能無縫集成,也支持直接與知名源代碼托管網(wǎng)站,比如github、bitbucket直接集成。
二、Jenkins的安裝
1、Jenkins本身是用java語言開發(fā)的,所以安裝Jenkins之前,要保證你的電腦有jdk,如果沒有,請到如下鏈接下載:http://rj.baidu.com/soft/detail/25851.html?ald ,另外建議git、ant、maven、gradle、groovy等工具也一并安裝好,方便與這些構(gòu)建工具集成。
2、進入Jenkins的官網(wǎng) https://jenkins.io/index.html ,然后下載并安裝Jenkins。此處有兩種安裝方法,使用命令行安裝和使用jenkins.pkg安裝,建議使用后一種
3、下載
1)點擊鏈接進入官網(wǎng)
2)點擊download
3)我選擇的是Mac OS X
4)下載完成后,得到 jenkins-2.19.4.pkg 文件,點擊直接安裝即可,在下圖中,選擇自定,取消 start at boot as“jenkins”,一般不需要自啟動
5)安裝完成后,會直接跳轉(zhuǎn)到如下界面,如果沒有跳轉(zhuǎn)或者跳轉(zhuǎn)失敗,可通過執(zhí)行如下命令 ” open /Applications/Jenkins/jenkins.war ” 進入到該界面
如果打開沒有反應(yīng),啟動不了,就在瀏覽器直接打開:http://localhost:8080/ ,就可以進入到上面界面了。
6)觀察圖中的路徑,然后打開你的終端,執(zhí)行如下命令(注意:該命令僅在安裝Jenkins的過程中執(zhí)行才有效;安裝成功后,再在終端中執(zhí)行是無效的):
7)然后將我們得到的password輸入到“Administrator password“中,即可進入如下界面,接著安裝一些建議的插件,安裝過程中,有的插件可能會安裝失敗,可以跳過,之后需要對應(yīng)的插件時,再重新安裝即可,具體后面會講到:
8)插件安裝完成后,可能會卡在如下界面,不會自動跳轉(zhuǎn),刷新下界面即可:
9)在刷新后的界面中注冊,輸入用戶名和密碼,如下:
10)注冊成功后,點擊”Start using Jenkins”
三、Jenkins的使用
1、安裝成功后,會進入到如下界面:2、新建項目
2)輸入項目名稱,并選擇構(gòu)建一個自由風(fēng)格的軟件項目,點擊下方的OK。
3)General 中建議寫上一些項目描述,這里啟用項目安全是指管理員對對應(yīng)登錄用戶設(shè)置的一些權(quán)限。
4)這里設(shè)置的是構(gòu)建項目(即用jenkins打包ipa時)的參數(shù)設(shè)置。
具體的使用是在項目頁點擊
然后進入頁面,BR就是剛剛設(shè)置的參數(shù)名稱,master就是你對應(yīng)項目的分支,在所有的設(shè)置都設(shè)置好了時就可以點擊開始構(gòu)建。
5)由于我們在配置jenkins用到了JDK,這里對應(yīng)的是JDK的名稱,第二個勾選項是配置的打包的項目關(guān)聯(lián)的mac電腦名稱(自己設(shè)置)。
具體的在首頁中可看到
點擊進去
6)源碼管理,公司的項目是放在gitlab上的,這里Repository URL填的是項目的路徑,Credentials添加的是gitlab上登錄的用戶名和密碼, Branch Specifier (blank for 'any')這里就是上面提到的構(gòu)建時的分支設(shè)置參數(shù)。
輸入對應(yīng)的用戶名和密碼后,并在Credentials中選擇該帳號。
7)由于項目是在另一臺mac機上構(gòu)建的,則這里配置身份驗證令牌。
8)構(gòu)建設(shè)置
在下圖的Target中,保證該Target和Xcode項目工程中的Target同名。建議勾選Clean before build?,并將Configuration設(shè)為Release。勾選Pack application and build .ipa?,同時為即將輸出的ipa文件命名并指定輸出路徑。
? Target:就是我們在項目中建立的Target
如果不清楚有哪些Target的情況下可以到xcodeproj或xcworkspace的目錄下運行如下命令 xcodebuild -list 即可看到Targets,其中是所有可以用的target。
? Clean before build?:這個是在編譯前是否clean一次,一般是選擇YES。
? Configuration: 對應(yīng)的是xcodebuild命令里的-configuration的參數(shù),可選項為[Debug、Release],一般都填Debug,這樣就可以將打包后的ipa交付給測試人員測試
? Pack application and build .ipa?:這個是在結(jié)束是是否要產(chǎn)生對應(yīng)的ipa文件,一般都是打上勾的
? .ipa filename pattern:這個配置項是配置所產(chǎn)生ipa的文件名,其中有一些可用的全局變量
其中${VERSION}和${SVN_REVISION}都是可以直接用的環(huán)境變量,如果想看還有哪些環(huán)境變量而已用可以點擊在Execute shell下方有個 "See the list of available environment variables"進行查看,這里就不進行列出來了。
? Output directory:這個配置了ipa的輸出目錄(默認(rèn)Build output directory所在路徑,見下圖)
Code signing & OS X keychain options (簽名的設(shè)置)
Codee Signing Identity:所使用的簽名
如果不知道具體填什么可以到鑰匙串訪問中尋找 iPhone Distribution:開頭的所使用的證書,然后選中后點擊右鍵選擇顯示簡介,在彈出的窗口中找到常用名稱,將其復(fù)制填入即可。 或者可以在命令行中輸入security find-identity -p codesigning -v來查找iPhone Distribution:開頭的簽名即可,找到后將雙引號中的內(nèi)容復(fù)制。
? Unlock Keychain?: Jenkins需要訪問Keychain,獲取響應(yīng)的key,所以需要授權(quán)。選上就自動解鎖。需要提供密碼。
? Keychain path: 默認(rèn)都是${HOME}/Library/Keychains/login.keychain
? Keychain password: 鑰匙串的密碼
注意:這個可以在 系統(tǒng)管理-》系統(tǒng)設(shè)置-》Xcode-》BuilderKeychains-》添加,在配置中可以選取
Advanced Xcode build options(xcodebuild命令的配置)
? Clean test report?:這個是如果要用到xcode測試的時候才用到,意思就跟英語一樣
? Xcode Scheme File: 關(guān)于這個其實對應(yīng)的就是xcodebuild命令中的-scheme的參數(shù)
如果您不知道要填寫什么的話, 可以通過xcodebuild -list來查詢。是不是覺得這條命令很熟悉,沒錯前面查找target的時候也是用這個命令!
? SDK:這里是xcodebuild命令中的-sdk的參數(shù),指定編譯和打包的sdk號。如果不懂可以填寫哪些可以通過xcodebuild -showsdks來查看。
? SYMROOT:該變量是編譯和打包產(chǎn)生結(jié)果的輸出目錄( .a, .zip, .ipa, .hmap等產(chǎn)生文件的位置),其中該目錄其實是包括了CONFIGURATION BUILD DIR和OBJROOT這兩個目錄,默認(rèn)的路徑是所編譯的xcodeproj所在目錄,如主項目和POD項目整合后,則會在主項目的和POD項目的XCODEPROJ所在目錄
如果在指定了OBJROOT的位置后,編譯過程中產(chǎn)生的文件不會在該目錄體現(xiàn) 如果在指定CONFIGURATION_BUILD_DIR的位置后,該變量則變成無效化
? Custom xcodebuild arguments:這個就是xcodebuild命令中的指定buildsetting的命令的參數(shù),至于可以指定哪些參數(shù)請不要問我,可以找度娘或者谷哥
? Xcode Workspace File:該配置是指明了xcodebuild中的-workspace的變量,其實就是如果您需要編譯打包一個workspace時候的時候指定那個后綴名為xcworkspace的文件, 如果指定了該配置,那么Xcode project file配置項將無效
? Xcode Project Directory:該目錄是指明了包含xcodeproj文件的目錄(這個我是沒用用到如果用了該參數(shù)可能最開始第一步的構(gòu)建就沒用了------不過我還沒證實,歡迎小伙伴證實后告訴我)
? Xcode Project File: 如果需要構(gòu)建一個project而不是一個workspace的話則指定文件的名稱(后綴名為xcodeproj的文件)
? Build output directory:該參數(shù)只是指明了最終需要產(chǎn)生的動態(tài)包,ipa,app等文件默認(rèn)路徑為所編譯的xcodeproj所在目錄,如主項目和POD項目整合后,則會在主項目的和POD項目的XCODEPROJ所在目錄(編譯產(chǎn)生的相關(guān)文件所在目錄,默認(rèn)為$SYMROOT/$CONFIGURATION)
? 值得說的是有一個參數(shù)也是挺常用的就是OBJROOT,該參數(shù)是產(chǎn)生 .a和 .hmap文件的目錄,默認(rèn)路徑為所編譯的xcodeproj所在目錄,如主項目和POD項目整合后,則會在主項目的和POD項目的XCODEPROJ所在目錄,關(guān)于OBJROOT、CONFIGURATION BUILD DIR以及SYMROOT三個路徑之間的關(guān)系大家可以去查看官方的文檔。
3、添加上傳到第三方分發(fā)平臺(這里選擇蒲公英平臺作為例子)
蒲公英上的User Key
uKey="41ed0a30a0cdf9296501232e69b5a66b"
蒲公英上的API Key
apiKey="ece94057dd3d5bd3d570ae509a0c3e3d"
要上傳的ipa文件路徑
IPA_PATH="${WORKSPACE}/build/PPCSDKTest.ipa"
密碼
PASSWORD="123456"
MSG=git log -1 --pretty=%B
執(zhí)行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload
到此為止關(guān)于Jenkins整合Xcode的配置項并自動上傳到蒲公英差不多就說好了。那么可以稍微構(gòu)建一下項目試試了,構(gòu)建完項目后,你就會發(fā)現(xiàn)測試人員不需要天天來煩你,再也不需要聽到“開發(fā)狗,趕緊給我安裝一個最新的版本”了。