1. 程式人生 > >jenkins+xcode+蒲公英實現ipa自動化打包

jenkins+xcode+蒲公英實現ipa自動化打包

原文
一、簡述
公司特意配了一臺mac機給測試用,並且打包釋出這些功能都要在這臺測試機上完成,老大特意讓我去研究一下jenkins實現自動化打包,好吧,那就去看吧。

百度搜一下,Mark一下簡介:jenkins是一個廣泛用於持續構建的視覺化web工具,持續構建即各種專案的”自動化”編譯、打包、分發部署。jenkins可以很好的支援各種語言(比如:Java, c#, PHP等)的專案構建,也完全相容ant、maven、gradle等多種第三方構建工具,同時跟svn、Git能無縫整合,也支援直接與知名原始碼託管網站,比如github、bitbucket直接整合。

二、Jenkins的安裝

1、Jenkins本身是用java語言開發的,所以安裝Jenkins之前,要保證你的電腦有jdk,如果沒有,請到如下連結下載:

http://rj.baidu.com/soft/detail/25851.html?ald ,另外建議git、ant、maven、gradle、groovy等工具也一併安裝好,方便與這些構建工具整合。

2、進入Jenkins的官網 https://jenkins.io/index.html ,然後下載並安裝Jenkins。此處有兩種安裝方法,使用命令列安裝和使用jenkins.pkg安裝,建議使用後一種

3、下載
1)點選連結進入官網
這裡寫圖片描述
2)點選download
這裡寫圖片描述
3)我選擇的是Mac OS X
這裡寫圖片描述
4)下載完成後,得到 jenkins-2.19.4.pkg 檔案,點選直接安裝即可,在下圖中,選擇自定,取消 start at boot as“jenkins”,一般不需要自啟動
這裡寫圖片描述


5)安裝完成後,會直接跳轉到如下介面,如果沒有跳轉或者跳轉失敗,可通過執行如下命令 ” open /Applications/Jenkins/jenkins.war ” 進入到該介面
這裡寫圖片描述
如果開啟沒有反應,啟動不了,就在瀏覽器直接開啟:http://localhost:8080/ ,就可以進入到上面介面了。

6)觀察圖中的路徑,然後開啟你的終端,執行如下命令(注意:該命令僅在安裝Jenkins的過程中執行才有效;安裝成功後,再在終端中執行是無效的):
這裡寫圖片描述
7)然後將我們得到的password輸入到“Administrator password“中,即可進入如下介面,接著安裝一些建議的外掛,安裝過程中,有的外掛可能會安裝失敗,可以跳過,之後需要對應的外掛時,再重新安裝即可,具體後面會講到:
這裡寫圖片描述


8)外掛安裝完成後,可能會卡在如下介面,不會自動跳轉,重新整理下介面即可:
這裡寫圖片描述
9)在重新整理後的介面中註冊,輸入使用者名稱和密碼,如下
這裡寫圖片描述
10)註冊成功後,點選”Start using Jenkins”
這裡寫圖片描述
三、Jenkins的使用
1、安裝成功後,會進入到如下介面:
這裡寫圖片描述
2、新建專案

1)點選新建,建立一個專案
這裡寫圖片描述
2)輸入專案名稱,並選擇構建一個自由風格的軟體專案,點選下方的OK。
這裡寫圖片描述
3)General 中建議寫上一些專案描述,這裡啟用專案安全是指管理員對對應登入使用者設定的一些許可權。
這裡寫圖片描述
4)這裡設定的是構建專案(即用jenkins打包ipa時)的引數設定。
這裡寫圖片描述
具體的使用是在專案頁點選
這裡寫圖片描述
然後進入頁面,BR就是剛剛設定的引數名稱,master就是你對應專案的分支,在所有的設定都設定好了時就可以點選開始構建。
這裡寫圖片描述
5)由於我們在配置jenkins用到了JDK,這裡對應的是JDK的名稱,第二個勾選項是配置的打包的專案關聯的mac電腦名稱(自己設定)。
這裡寫圖片描述
具體的在首頁中可看到
這裡寫圖片描述
點選進去
這裡寫圖片描述
6)原始碼管理,公司的專案是放在gitlab上的,這裡Repository URL填的是專案的路徑,Credentials新增的是gitlab上登入的使用者名稱和密碼, Branch Specifier (blank for ‘any’)這裡就是上面提到的構建時的分支設定引數。
這裡寫圖片描述
輸入對應的使用者名稱和密碼後,並在Credentials中選擇該帳號。
這裡寫圖片描述
7)由於專案是在另一臺mac機上構建的,則這裡配置身份驗證令牌。
這裡寫圖片描述
8)構建設定

在下圖的Target中,保證該Target和Xcode專案工程中的Target同名。建議勾選Clean before build?,並將Configuration設為Release。勾選Pack application and build .ipa?,同時為即將輸出的ipa檔案命名並指定輸出路徑。

? Target:就是我們在專案中建立的Target

如果不清楚有哪些Target的情況下可以到xcodeproj或xcworkspace的目錄下執行如下命令 xcodebuild -list 即可看到Targets,其中是所有可以用的target。

? Clean before build?:這個是在編譯前是否clean一次,一般是選擇YES。

? Configuration: 對應的是xcodebuild命令裡的-configuration的引數,可選項為[Debug、Release],一般都填Debug,這樣就可以將打包後的ipa交付給測試人員測試

? Pack application and build .ipa?:這個是在結束是是否要產生對應的ipa檔案,一般都是打上勾的

? .ipa filename pattern:這個配置項是配置所產生ipa的檔名,其中有一些可用的全域性變數

其中VERSION{SVN_REVISION}都是可以直接用的環境變數,如果想看還有哪些環境變數而已用可以點選在Execute shell下方有個 “See the list of available environment variables”進行檢視,這裡就不進行列出來了。

? Output directory:這個配置了ipa的輸出目錄(預設Build output directory所在路徑,見下圖)
這裡寫圖片描述
Code signing & OS X keychain options (簽名的設定)

Codee Signing Identity:所使用的簽名

如果不知道具體填什麼可以到鑰匙串訪問中尋找 iPhone Distribution:開頭的所使用的證書,然後選中後點擊右鍵選擇顯示簡介,在彈出的視窗中找到常用名稱,將其複製填入即可。 或者可以在命令列中輸入security find-identity -p codesigning -v來查詢iPhone Distribution:開頭的簽名即可,找到後將雙引號中的內容複製。

? Unlock Keychain?: Jenkins需要訪問Keychain,獲取響應的key,所以需要授權。選上就自動解鎖。需要提供密碼。

? Keychain path: 預設都是${HOME}/Library/Keychains/login.keychain

? Keychain password: 鑰匙串的密碼

注意:這個可以在 系統管理-》系統設定-》Xcode-》BuilderKeychains-》新增,在配置中可以選取
這裡寫圖片描述
Advanced Xcode build options(xcodebuild命令的配置)

? Clean test report?:這個是如果要用到xcode測試的時候才用到,意思就跟英語一樣

? Xcode Scheme File: 關於這個其實對應的就是xcodebuild命令中的-scheme的引數

如果您不知道要填寫什麼的話, 可以通過xcodebuild -list來查詢。是不是覺得這條命令很熟悉,沒錯前面查詢target的時候也是用這個命令!

? SDK:這裡是xcodebuild命令中的-sdk的引數,指定編譯和打包的sdk號。如果不懂可以填寫哪些可以通過xcodebuild -showsdks來檢視。

? SYMROOT:該變數是編譯和打包產生結果的輸出目錄( .a, .zip, .ipa, .hmap等產生檔案的位置),其中該目錄其實是包括了CONFIGURATION BUILD DIR和OBJROOT這兩個目錄,預設的路徑是所編譯的xcodeproj所在目錄,如主專案和POD專案整合後,則會在主專案的和POD專案的XCODEPROJ所在目錄

如果在指定了OBJROOT的位置後,編譯過程中產生的檔案不會在該目錄體現 如果在指定CONFIGURATION_BUILD_DIR的位置後,該變數則變成無效化

? Custom xcodebuild arguments:這個就是xcodebuild命令中的指定buildsetting的命令的引數,至於可以指定哪些引數請不要問我,可以找度娘或者谷哥

? Xcode Workspace File:該配置是指明瞭xcodebuild中的-workspace的變數,其實就是如果您需要編譯打包一個workspace時候的時候指定那個字尾名為xcworkspace的檔案, 如果指定了該配置,那麼Xcode project file配置項將無效

? Xcode Project Directory:該目錄是指明瞭包含xcodeproj檔案的目錄(這個我是沒用用到如果用了該引數可能最開始第一步的構建就沒用了——不過我還沒證實,歡迎小夥伴證實後告訴我)

? Xcode Project File: 如果需要構建一個project而不是一個workspace的話則指定檔案的名稱(字尾名為xcodeproj的檔案)

? Build output directory:該引數只是指明瞭最終需要產生的動態包,ipa,app等檔案預設路徑為所編譯的xcodeproj所在目錄,如主專案和POD專案整合後,則會在主專案的和POD專案的XCODEPROJ所在目錄(編譯產生的相關檔案所在目錄,預設為SYMROOT/CONFIGURATION)

? 值得說的是有一個引數也是挺常用的就是OBJROOT,該引數是產生 .a和 .hmap檔案的目錄,預設路徑為所編譯的xcodeproj所在目錄,如主專案和POD專案整合後,則會在主專案的和POD專案的XCODEPROJ所在目錄,關於OBJROOT、CONFIGURATION BUILD DIR以及SYMROOT三個路徑之間的關係大家可以去檢視官方的文件。
這裡寫圖片描述
3、新增上傳到第三方分發平臺(這裡選擇蒲公英平臺作為例子)

蒲公英上的User Key

uKey=”41ed0a30a0cdf9296501232e69b5a66b”

蒲公英上的API Key

apiKey=”ece94057dd3d5bd3d570ae509a0c3e3d”

要上傳的ipa檔案路徑

IPA_PATH=”${WORKSPACE}/build/PPCSDKTest.ipa”

密碼

PASSWORD=”123456”

MSG=git log -1 –pretty=%B

執行上傳至蒲公英的命令

echo “++++++++++++++upload+++++++++++++”

curl -F “[email protected]IPAPATH"F"uKey={uKey}” -F “_api_key=apiKey"F"updateDescription={MSG}” -F “password=${PASSWORD}” http://www.pgyer.com/apiv1/app/upload
這裡寫圖片描述
到此為止關於Jenkins整合Xcode的配置項並自動上傳到蒲公英差不多就說好了。那麼可以稍微構建一下專案試試了,構建完專案後,你就會發現測試人員不需要天天來煩你,再也不需要聽到“開發狗,趕緊給我安裝一個最新的版本”了。