IOS使用Jenkins持續集成


本文詳細介紹了開發過程,提高效率進行IOS-Jenkins持續集成。

第二http://blog.csdn.net/monkey_cool/article/details/43270885

背景

平時我們開發完畢IOS項目,須要打包給測試人員進行測試。當中的過程須要反復進行:改動配置項--編譯---連接設備--執行打包--debug進設備中--然后交給等待的測試人員。現有成熟的持續集成Jenkins解決方式。而且該方案也提供了Xcode插件的支持,能夠講上述過程封裝成一鍵解決方式。

我實現的是jenkins運行IOS的job,buildproject。簽名打ipa包,上傳到FTPserver。放到tomcat下,提供http下載安裝app。

過程

1.下載安裝jenkins

官網地址:https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins#InstallingJenkins-Unix%2FLinuxInstallation

下載之后。是個war包(后台服務),是要求有jdk的。

然后直接點擊jenkins.war就可以執行,訪問http://localhost:8080/就可以

也可通過命令行執行 java -jar jenkins.war --httpPort=8888;http://localhost:8888/

也能夠放到tomcat以下。

執行起來后,會在user下創建一個.jenkins文件夾。

2.添加Xcode插件

在jenkins的系統管理中,找到管理插件。可選插件的tab下搜索xcode,勾選安裝,安裝插件/升級處等待—jenkins升級到最新版本號了。xcode插件更好安裝(假設失敗請下載最新的jenkjins,或者多嘗試幾次)。

這樣重新啟動jenkins的話。就會在job的構建中下拉選擇處看到xcode的支持選項。

3.新建job

新建一個free的job.


4.源代碼管理

假設使用svn。選擇subversion,直接指向地址就可以;假設沒有使用svn,選擇none。則須要先執行下job,這樣jenkins的工作文件夾就創建了一個結果failed的job,文件夾為.jenkins/jobs/你的job名字/。

這時候,job下的文件夾還有builds,workspace等文件夾文件,我們須要的就是往workspace中放入我們的代碼project(這是官方的解決方式)。

文件夾結構見下圖。

這樣workspace中就有了代碼。

5.構建xcode項目

在添加構建步驟下拉中選擇xcode。

如上圖,簡單配置參數。運行項目的target,Configuration為Debug(看情況選擇Release),以下還有個Pack application and build .ipa選項,這個我沒選。

以下還有個Code signing和鑰匙鏈的選項。能夠不填。會自己主動找默認的(項目中配置的吧,能夠在執行時的console中看到執行的日志。輸出中會有每一步做什么了)。

在以下還有個xcode的高級參數配置。如圖:

scheme配置。以及須要build執行的SDK,這里選擇iphoneos(這是要准備在真機上執行),還有構建的輸出文件夾。

在這里說下模擬器的事項。這里不能配置成iphonesimulator。是由於沒用。模擬器不能執行起來的,首先蘋果unix命令可以啟動模擬器,可是沒有提供api來命令行方式往模擬器中安裝ipa程序並執行(xcodebuild命令沒有這個支持)。上網找了個解決方式。發現是非常久之前的了,4年前的,有個github的提供的插件。可是這個插件project須要依賴iPhoneSimulatorRemoteClient.framework這個庫。而如今的mac都搜不到這個庫,所以不能執行,so命令行方式啟動模擬器,並安裝執行ipa的方式不行了,僅僅能真機方式來了。

執行job,此時應該能出現當前的文件夾文件,那個ipa還出不來呢。

如今到這。說明jenkins的這個IOS的job已經可以基本ok了。

6.接着我們來實現打包ipa文件

上面那個xcode配置 pack application and build ipa我沒選,那個還沒搞清楚,它的輸出文件夾上下文變成jenkins了。而實際生成的ipa在xcode的安裝文件夾的非常隱蔽的文件夾。這個臨時沒搞清呢。

而我是通過shell來做的,命令行方式。

選擇添加構建步驟,點擊shell的,然后出現個命令行的輸入框。見圖。

依照圖上的命令。選擇sdk 打包app 指定輸出文件夾文件。這樣就能在build完畢后出現上上圖文件夾結構中的ipa文件,這個就是我們須要的安裝程序了,經過簽名的能再真機安裝的。

詳細指定添加簽名和描寫敘述的命令請看xrun的命令說明。

ok,我們已經完畢了一大步了。

7.如今我們再來設置上傳ftp的功能

mac電腦本身支持ftp服務的,而且發現了一個改動系統的便捷軟件。lion tweaks。

找到右側的ftp,開啟就可以。

我們須要設置一下jenkins的系統配置--系統管理鏈接在根路徑左側,點開然后選擇系統設置,下來找FTP的配置項,見圖:

我設置的自己電腦。所以localhost了。設置ftp的根路徑root repository path。填入本機的usernamepassword。

如圖設置自己job的ftp服務,

見圖,設置須要上傳的文件以及其對應的文件夾。如今ipa程序文件的上傳,我們須要將build文件夾生成后的ipa文件上傳到ftpserver的一個文件夾。我們為了興許通過tomcat服務進行手機下載。所以上傳到tomcat的文件夾下。

上傳成功會在tomcat下有此文件夾結構,見圖:

這樣我們上傳文件到ftpserver的就實現了。

8.Tomcat服務

然后我們須要設置tomcat服務,以方便手機可通過網頁下載並安裝我們的應用。

下載tomcat,進入tomcat的bin文件夾,運行命令,

sh startup.sh

啟動tomcat。

新建一個簡單的web項目,這個請簡單看下web自己實現。然后放到tomcat的webapps以下,改動tomcat的訪問port8088,與jenkins8080沖突,這樣我們訪問tomcat的時候,

就能訪問到我們的項目,http://localhost:8088/hello_jenkins2/index.jsp。

9.下載支持文件

如今說明我們的jenkins的job的ftp其它文件上傳是干嘛,ios_down.html是提供一個網頁,能夠點擊一個鏈接從而下載安裝程序到手機。而相對的那個hello_jenkins.plist文件則是支持ipa文件下載到手機的文件。

ios_down的鏈接協議指向這個plist,

<a href="itms-services://?action=download-manifest&url=http://192.168.200.124:8088/hello_jenkins2/publish/hello_jenkins.plist"><h2>Install</h2></a>

這個hello_jenkins.plist里面說明並指向ipa

內容例如以下

<?xml version="1.0" encoding="UTF-8"?

>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>items</key>
   <array>
       <dict>
           <key>assets</key>
           <array>
               <dict>
                   <key>kind</key>
                   <string>software-package</string>
                   <key>url</key>
                   <string>http://192.168.200.124:8088/hello_jenkins2/static/build/Debug-iphoneos/HelloJenkins.ipa</string>
               </dict>
           </array>
           <key>metadata</key>
           <dict>
               <key>bundle-identifier</key>
               <string>com.hai.HelloJenkins</string>
               <key>bundle-version</key>
               <string>1.0</string>
               <key>kind</key>
               <string>software</string>
               <key>subtitle</key>
               <string>HelloJenkins</string>
               <key>title</key>
               <string>HelloJenkins</string>
           </dict>
       </dict>
   </array>
</dict>
</plist>

這樣,瀏覽網頁ios_down.html的時候。點擊上面的install標簽,則指向hello_jenkins.plist文件,並解析再定位到ipa文件,手機同一時候提示下載安裝hello_jenkins了。下載安裝就可以。

10.完畢

手機訪問

http://192.168.200.124:8088/hello_jenkins2/publish/ios_down.html

我的已經安裝到手機了,就不發圖了。


11.最后注意一些問題

注意路徑問題,假設job的ftp文件上傳路徑。html文件和plist文件的路徑有一點不正確。都會造成無法訪問等下載不了問題。

還要注意安裝程序的base sdk與真機的兼容性。否則安不上。

注意ftp的上傳文件夾是基於我們系統設置的用戶文件夾下的。

還有就是假設上傳文件的文件夾沒對上。jenkins是不報錯的,而輸出日志提示not found 文件,所以多看看job的日志。

還有就是有時候plist文件明明是對的可是就是顯示無法訪問。請試試copy一份別處的plist文件,在改動內容,我的以前出現過,copy一份就好了。



ps:

網上這方面的不多,自己花時間研究了下,奉獻給大家了。另一些疑點沒弄清,興許再補充了。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM