關于iOS 自動打包的 jenkins +SVN 干貨!

背景描述


本文不適合手把手教你集成 Jenkins 的童鞋....本文則是一片問題出現與解決的總結~!

首先,我要將一下為什么我們要用 Jenkins 這個平臺來構建自動打包平臺:有人會有疑問,使用腳本在電腦上打包, 效率也是非??斓?為啥還要用這個開源平臺呢? ? 我們的自動打包需求并不是為了方便開發人員, 而是為了減輕測試部門同事的工作量,去掉中間那么多的共同時間,讓他們可以在需要的時候去打包測試. 那問題就來了, 要知道iOS 的打包是需要創建證書的那臺特定機子去打, 而其他人即使拿到 P12 文件也無法打包成功(相同的腳本,直接運行會各種錯誤),而 jenkins 就完美得解決可這一問題.

網上也有很多 jenkins 的使用教程之類的東西, 但是,通過自己做過這一遍,深感那些資料有寫不能滿足我的需要, 很多資料都是交給你怎么成功得整合, 卻沒有說明當你在整合時會出現的問題, 或者是出現了怎么解決(特別是在 使用了gitLab的項目).為了給后來者以方便,特寫此文.

集成 Jenkins


我在這里不會詳細的介紹怎么安裝和搭建 jenkins 運行環境, 網上有很多, 我只是提想下打算在Mac 上構建Java 環境的開發者, jenkins 的運行不要構建 Java HOME , 直接安裝 Java_JDK就可以了,然后到官網下載頁面,選擇? Mac os X 版本 .在安裝時,一定要按默認的安裝,不要自定義安裝, 網上有的資料是自定義安裝,不去創建jenkins用戶,這個很坑人,千萬不要少裝了?。。?!

安裝完畢后, 確保你的shared文件下存在jenkins用戶。

當我們第一次進入jenkins 時會讓我們安裝,等待頁面下載完畢,然后注冊, 當然要是忘記了密碼.是沒有找回密碼這一按鈕的, 你需要去刪除在/Users/Shared/Jenkins/Home/config.xml 以下代碼

然后重新啟動jenkins? sudo service jenkins restart , 當然,重啟電腦也行..哈哈..

打包項目構建


進入 jenkins 頁面后, 新建一個項目, 如何新建項目,網上自己百度吧..記住一點,自己的項目名稱或運行腳本名不要出現空格, 因為空格會被轉譯.這回在你使用命令在終端中調試時出現很多不必要的麻煩...

在項目配置中的"源碼管理"中選擇 Subversion , Repository URL里填寫 SVN 地址, 直接拷貝項目 URL粘進去就可以, Credentials 中點擊添加, 選擇賬號 密碼連接類型, ID , 描述什么的可以不寫.添加賬號后回到前一頁面Credentials,選擇該賬號, 沒有連接上回報錯.

到這里如果你是使用腳本打包的,那構建過程中的難點就沒有了, 如果你是使用 Xcode 構建的話, 還是有一定難度在等你. 當然如果你的本地項目工程使用Workspace來管理的, 那么請按照網上主流的資料進行配置就可以了, 如果你的工程中沒有使用Workspace來管理,那么在Xcode Workspace File 輸入地址當然會在打包時報錯..這時候你會發現在頁面中還有幾個框, 其中一個是Xcode Project File,這樣你將你的項目運行文件. xcodeproj放進去,就可以了...

配置jenkins的關鍵


我們使用jenkins的目的是實現jenkins自動打包svn 或git 托管的最新代碼。而不是你電腦本地的工程。所以不管是腳本還是Xcode插件,build的工作區間必須是jenkins目錄下的workspace;使用腳本時, 第一次我們不知道我們的目標工程在哪里, 所以當你配置差不多了,可以選擇構建一次, 這樣jenkins下的workspace文件下就有了你的目標文件。jenkins 首先會自己會檢出一份代碼, 將腳本也放在該工程文件下, 如果你構建時報“沒有權限”的問題, 那就使用命令給jenkins文件全部權限(chmod -R 777 /文件路徑)。單單去改變腳本權限是沒有用的~!

要實現jenkins的自動打包,其實就是要jenkins用戶下可以正常打包,真機運行。因為你的目標工程是在shared目錄下的jenkins下, 所以,首先你需要保證在你自己用戶下可以打包,等。然后,切換用戶到jenkins下, 通過shared可以找到目標工程, 然后再這里面實現正常打包,運行等。。完成這兩部,你就已經離成功不遠了~!(在jenkins中如果出現問題, 請往下仔細閱讀)。


打包時的常見問題


項目配置全部都 OK 了, 這時候我們點擊"立即構建"按鈕, 第一次一般都會報錯,一下是集中常見報錯的現象及原因以及解決方法:

如果你是使用 Xcode 構建:

1. Jenkins Xcode 證書設置錯誤 :

Code Sign error: No matching codesigning identity found: No code signing identities

?或者

Check dependencies

Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“qingyunDeveloper”) were found.

或者報什么 UUID(***************)不匹配

原因: Xcode 現在的證書選項選擇不正確, 或者是 jenkins 的Xcode 證書沒有在其證書文件中找到相應證書對應項.jenkins的打包是在jenkins用戶下進行的,所以,在本機用戶的證書環境要與jenkins用戶環境證書一致。

解決1: 叫你的老大給你把 P12文件傳給你,打開.選擇好證書類型, 然后再構建, 如果還是不行,找到你用戶下的Provisioning Profiles 文件。目錄為 /Users/xxx/Library/MobileDevice/Provisioning Profiles? xxx表示你自己的用戶名

把這里面所有的證書復制到/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile? 這個文件。然后再構建..

2.構建時,輸出錯誤為權限問題..

原因:因為在安裝 jenkins 后, 會系統會自動創建一個 jenkins 的用戶, 你現在所使用的是自己的 MAC 用戶,所以操作 jenkins 會無權限,.

解決:你需要做的是找到報錯的地址文件, 單擊右鍵,顯示簡介中找到共享與權限, 全部給讀寫權限, 并且查看根目錄其他文件是否是全部讀寫權限...或者直接暴力(chmod -R 777 /路徑)

3.Xcode 編譯出錯 ,代碼不支持新的 SDK

原因:因為 jenkins 構建時,默認是 APPStore 上最新的版本, 有的工程里第三方文件編譯時,不支持最新 Xcode 版本, 所以需要更改 Xcode 的編譯 SDK.

解決:運行 xcodebuild -showsdks 命令在終端中查看當前版本, sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer ?后面的地址是你需要的 Xcode 版本的地址,如你想更換為9.2的 SDK, 那么該地址則為 Xcode 7.2.1 的報內容. ?更改完后構建即可.

4.如果在jenkins用戶下,按第一條問題解決方法操作,還是無法運行,或者找不到想要的描述文件。一直報證書的錯。

原因:上次刪除jenkins時不規范, 文件有殘留,導致這次安裝有問題。

解決:按照網上刪除jenkins的方法去刪除(都是命令語言),然后再裝, 重新按照步驟來做。

5.兩個用戶下各自都能打包,運行。但是回到本機使用jenkins網頁上的構建按鈕構建,提示:

原因:提示的意思是jenkins用戶沒有解鎖用戶交互。但是,如果你去網上按照那些方法添加“登陸鑰匙串”的解鎖命令,還是無法完成。其實,這個問題的實質還是證書的問題,但這個問題不是描述文件的事,而是開發或者發布證書沒有添加的問題。

解決:進入jenkins用戶下, 如果你直接雙擊打開證書, 但是,系統會提示你 user interface is not allowed。 所以并不能這么直接添加, 而是要打開鑰匙串, 找到“system”---copy全部的證書-----“login”---粘貼 ?。

再去構建,OK 完美~!O(∩_∩)O哈哈~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容