IOS使用jenkins進行持續整合 第二篇,iosjenkins
上一篇,自己嘗試進行持續整合,研究的不深入,這兩天,為公司搭建持續整合環境,以及內部版本系統,瞭解的更多了,所以分享出來。
這篇主要介紹一些其他東西,不重複介紹上一篇的內容。
如果使用jenkins進行ios持續整合,需要xcode外掛程式支援,所以先下載xcode外掛程式,而且後期還要用到ftp服務,也安裝ftp的外掛程式。
jenkins中可以自己建立特定的視圖分組,all視圖點擊+號就能建立新視圖,建立好後,在左側的編輯檢視選項,則會進入詳情頁,可以選擇放入此視圖的任務;相對於任務,我覺得最好依據代碼svn地址,一般代碼是分版本儲存在不同位置,所以我們的任務也指向的一個版本,我是任務區分的版本號碼,例如 xxx_iphone_dev_2.5.0.
下面講述IOS任務中的一些配置
1.一般勾選丟棄舊的構建,這樣會清理build檔案夾。
2.源碼管理,一般使用Subverison,
Respository url,這是設定你的代碼的svn地址,控制好訪問到哪一個檔案夾。
Local module directory (optional),這是讓你自己設定代碼儲存到本地工作區的自訂目錄,如果不寫,則代碼直接放在當前工作區目錄下;如果自訂目錄,則會在工作區建立這個目錄結構,
然後代碼儲存到這個目錄下。
源碼管理,允許你下載多個地址的代碼,點擊add more locations...。
具體看圖,一看就明白。
不同的代碼下載到不同的目錄,實際檔案結構如。
一般,代碼checkout策略,update就行。
3.觸發器沒加呢,可以設定每天幾點觸發構建,這個比較好,看自己需要。
4.增加xcode構建步驟
這裡需要注意你的xcode工程的類型,和svn地址。
一般如果你的工程是單一的project,則好說,像下面,寫個工程內的target,
打ipa包,寫入ipa包名稱,不用加.ipa,jenkins自動加上,輸出目錄,這裡需要說下,jenkins中有很多地方都要匹配正確目錄結構,大家可以看jenkins任務執行的日誌看哪裡出錯,更可以看
實際的物理檔案,/Users/xxx/.jenkins/workspace/job名稱/。(.開頭的一般是隱藏檔案,一般mac使用者都會讓系統顯示隱藏檔案)。
5.簽名
簽名的得寫全名稱,下面的描述檔案那個不用填,否則報錯,前提是你的程式的target需要設定好工程能識別的簽署憑證,注意需要正常識別,不存在的描述檔案配置可不行。
6.xcode進階配置
由於我們的工程是一個workspace而不是單一的project,所以直接簡單配置target是不管用的。
這裡需要注意,你使用的當前運行jenkins的mac電腦,需要執行下程式,進而產生當前電腦使用者的scheme,然後上傳到svn,這時再下載的時候,才會存在該使用者的scheme,否則svn代碼原來不帶該使用者的scheme,就不能build成功,報錯說當前的workspace不存在xxx scheme。
xcode scheme file填寫程式的scheme。
SDK填寫你當前xcode命令列串連的xcode app的支援的sdk,假如你沒注意過命令列,
haiwangdeMac-mini:VANCL hai$ xcodebuild -version
Xcode 6.0
Build version 6A313
這個說明我的使用的是xcode6.0.
haiwangdeMac-mini:VANCL hai$ xcodebuild -showsdks
OS X SDKs:
OS X 10.9 -sdk macosx10.9
iOS SDKs:
iOS 8.0 -sdk iphoneos8.0
iOS Simulator SDKs:
Simulator - iOS 5.0 -sdk iphonesimulator5.0
Simulator - iOS 6.0 -sdk iphonesimulator6.0
Simulator - iOS 7.1 -sdk iphonesimulator7.1
Simulator - iOS 8.0 -sdk iphonesimulator8.0
這個說明當前xcode支援的sdks。如果你命令列串連的xcode5,又SDK填入的iphoneos8.0,則會報錯沒有此sdk.
haiwangdeMac-mini:VANCL hai$ xcode-select -p
/Applications/Xcode 6.0.app/Contents/Developer
上個命令說明你的命令列串連的哪裡。
Usage: xcode-select [options]
Print or change the path to the active developer directory. This directory
controls which tools are used for the Xcode command line tools (for example,
xcodebuild) as well as the BSD development commands (such as cc and make).
Options:
-h, --help print this help message and exit
-p, --print-path print the path of the active developer directory
-s <path>, --switch <path> set the path for the active developer directory
-v, --version print the xcode-select version
-r, --reset reset to the default command line tools path
使用xcode-select -s <path> 可以重新設定命令列串連的地址,設定你串連到那個xcode版本上。
xcode workspace file 指定你的workspace在哪裡,多個svn地址的時候需要為每個xcode構建配置不同的workspace。也許是2.5.0/xxx,也許是3.0.0/xxx.build output directory 輸出目錄,你的任務構建的成果就出現在這個目錄結構中,你的程式的app啊還有打成的ipa包啊plist檔案等等。
在xcode構建中,你可以建立多個xcode構建過程,進而打不同的程式包。6.構建後操作--郵件一般都會設定郵件接收build失敗的報告。這個需要說下系統管理--這裡設定很多東西。恩,同時也說說其他的。有個執行者數量,設定同時執行多少個jobs。Default view 預設視圖。Jenkins Location需要配置jenkins url,這台機器的jenkins服務地址,http://10.8.53.131:8080/。系統管理員郵件地址,填 vancl_ios_jenkins <xxxxx@xxx.com>
Subversion 一般選擇1.7.郵件通知,需要設定SMTP伺服器。
注意下面有個選框,通過發送測試郵件測試組態,你可以設定一個郵件接收方測試郵件是否能夠發送成功。
7.ftp上傳服務
上一篇有個軟體 lion weak吧,開放電腦的ftp功能。
在系統設定中設定ftp參數
我是傳到本地。
然後是發布成果到ftp伺服器。
我是直接發送到我的tomcat目錄的發布系統的下面。
這裡需要注意,一般選擇flatten files,這樣的話,你上傳的Source路徑下的目錄結構就不會一起上傳到Destination中,只會上傳相應的檔案;如果沒有勾選,則會在Destination的目錄結構下
又建立了Source的目錄結構,很不爽。
這裡再說下支援手機內直接下載安裝的東西。
打ipa包的時候可以直接產生plist檔案,它的plist的url填寫成你的服務的地址,這個地址加上檔案名稱就組成了可下載ipa包的http服務地址url。這個plist url中jenkins會自動後面加上ipa檔案名稱。
是任務執行成功,並ftp上傳到tomcat目錄下的ipa以及對應的plist,開啟plist可以看到它的軟體值是指向對應的ipa包的。
8.這些包和檔案都上傳成功後,則設定下tomcat。
建立一個簡單的web服務即可,首頁的index.html改改。
增加下載連結
[html] view plaincopy
- <a href="./static/vancl_iphone_app/3.1.0/VANCL-Online-3.1.0.ipa">VANCL-Online-3.1.0.ipa</a>
和直接安裝的連結
[html] view plaincopy
- <a href="itms-services://?action=download-manifest&url=http://10.8.53.131:8088/static/vancl_iphone_app/3.1.0/VANCL-Online-3.1.0.plist">install</a>
由於ios7.0以後需要伺服器的https支援,這個直接下載安裝沒多弄呢。
可用keytool建立認證,然後放到tomcat 下,修改server.xml,但是我弄好後還是不能下載。
使用http,7.0的安裝會提示認證無效;使用https則提示無法串連到ip地址,貌似好像得需要權威的認證,以後看看放到公司的伺服器上去。
index.html修改好後,就可啟動tomcat訪問這個服務了,暫時就這些了。
上一篇:http://blog.csdn.net/monkey_cool/article/details/38010471