史上最全Jenkins+SVN+iOS+cocoapods環境搭建及其錯誤匯總

前言


持續集成是敏捷開發中重要的一部分,為保證新功能的開發,又保證舊功能的維護,從一個沖刺到下個沖刺。持續集成工具是我們保證開發和維護并行的護航者,現在流行的集成工具有很多,例如:

1.Jenkins

2.Buildbot

3.Travis CI

經過對比,Jenkins工具搭建相對簡單(僅指安裝),打包速度也比較快,得到很多朋友的青睞,所以本文是以描述Jenkins搭建環境為主旨。(踩了好多坑啊哈哈哈)

Jenkins 的 好處

在寫本文之前,我覺得有必要提一下Jenkins 對一個團隊的好處。

最簡單粗暴的好處就是降低 開發團隊與測試團隊的耦合,Jenkins也支持定時自動打包,上傳等,省去了“修改配置項--編譯---連接設備--運行打包--裝ipa--然后交給等待的測試人員”這些簡單繁瑣的步驟。也避免測試人員測錯包之類,把開發已經修改的bug打回來這種問題。

注意:打包ipa包需要有xcode環境,所以要想在公司的服務器配置iOS打包環境,要求服務器必須是Mac OS系統,Linux和Windows只能靠邊了。我是在一臺Mac mini 下配的環境。

步驟大致可以分為以下幾步:

1.搭建Java環境

2.搭建Jenkins環境

3.配置證書和描述文件、鑰匙串

4.配置項目

5.配置xcode 環境

1.配置java環境


瀏覽器打開 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html? ?選擇Mac OS 的安裝包下載,JDK安裝都很簡單,安裝過程這里就省略了。


JDK

2.搭建Jenkins環境


瀏覽器打開 Jenkins官網?點擊下載Jenkins,選擇Mac OS安裝包,我現在裝的是2.46.1

選擇jenkins安裝包

接下來就是傻瓜式的下一步安裝,這里就不一一貼圖了。

安裝完成后瀏覽器一般會自動打開?http://localhost:8080,如果不自動打開可以手動打開這個鏈接,然后會提下下列的錯誤信息


unlock Jenkins

顧名思義,我們要去log路徑下取到password,輸入才能進入Jenkins。右鍵 Finder->前往文件夾->輸入/Users/Shared/Jenkins/Home 回車后應該看到下面

jenkins psd

看到secrets文件是有個減號的,右鍵secrets->顯示簡介->共享與權限->將everyone權限改成 讀與寫。

secret權限

雙擊點開secrets之后應該如下所示:


initialAdminPassword

同理,因為我們沒有initialAdminPassword的讀寫權限是無法打開的,右鍵 initialAdminPassword->顯示簡介->everyone權限改成讀與寫

initialAdminPassword權限

然后用文本來打開initialAdminPassword,把里面那串數字復制,把這串數字填到Jenkins啟動的那個頁面,如果你不小心關了上面那個頁面,打開http://localhost:8080即可。

解鎖

然后continue,這時會看到以下頁面,選擇紅色框里的 Install suggested plugins(Jenkins建議安裝的插件)

customize Jenkins

看到這個頁面之后,等待Jenkins把插件下載完


下載插件

這里創建下Admin User,把這些項都填完之后點擊save and finish就OK了。注意要記得用戶名和密碼,以后你登錄要用到的,忘記密碼就麻煩了。


創建用戶名和密碼


ready

到這步已經說明Jenkins環境已經搭建好了。點擊start using jenkins

進入jenkins頁面

這時需要配置一下插件,系統管理->管理插件->可選插件


插件管理第一步

因為項目是配置svn為管理器的,git管理代碼的可以參照其他同學的教程自行配置。我們先下載svn插件,在過濾輸入框中輸入svn,勾選 SVN Publisher plugin。點擊直接安裝。

插件管理-svn

同理,我們要下載 xcode integration 和keychains and Provisioning Profiles Management 這兩個插件。

插件管理-xcode integration


插件管理- keychain and profiles

把這兩個搜索出來,勾選然后直接安裝。然后等待完成

等待插件安裝完成

安裝完成后我們重啟下jenkins,重新加載下插件??梢曰阶畹紫鹿催x重啟,或者也可以在地址欄輸入http://localhost:8080/restart??

完成安裝插件重啟Jenkins

重啟之后應該要輸入用戶名和密碼,把剛剛注冊的用戶名密碼輸入進去。

還有一個重要的步驟,我們先給Jenkins用戶管理員的權限,避免后續的訪問問題。

系統偏好設置->用戶與群組->點開鎖,然后在Jenkins用戶下勾選“允許用戶管理這臺電腦”。

到這步最好給Jenkins用戶設置一個密碼,便于后期檢查是否Jenkins配置錯誤或者是檢查代碼錯誤。

Jenkins用戶權限問題

3.配置證書和描述文件、鑰匙串


點擊系統管理->keychain and provision Profiles Management


keychain and provision

在這之前,我準備了開發證書.p12 + 描述文件,生產證書.p12 + 描述文件,分別用來上線打包和測試打包。這步并不需要我們上傳證書,而是上傳需要描述的文件和login.keychain。login.keychain有坑!有坑!有坑?。。。?! 之前我是把login.keychian 復制到桌面然后上傳的,構建的時候總是報錯keychian 權限問題。然后我是按照以下方式來做的。

配置keychain 證書和描述文件

在此之前先普及一下,jenkins其實是自己開了一個用戶,用于存儲一些配置文件和信息等。我們可以在finder里面找到Jenkins用戶的文件夾,點擊前往上層文件夾

尋找上層文件夾

然后找到共享中的jenkins用戶

jenkins目錄

1.Finder->前往文件夾->/Users/“你的mac用戶名”/library

2.找到keychains 這個文件夾,拷貝

3.用上面那種方法放到Jenkins->Library文件夾下

拷貝keychain文件

為了避免描述文件也出現類似的找不到的錯誤,我們也把描述文件拷貝到Jenkins用戶->Library。

1.Finder->前往文件夾->/Users/“你的mac用戶名”/library(或者還有一個方法,打開xcode->preferences->找到你賬號下的描述文件)

2.找到keychains 這個文件夾,拷貝"MobileDevice"整個文件夾

3.用上面那種方法放到Jenkins->Library文件夾下。

拷貝mobileDevice文件

接下來就是上傳keychain和描述文件了。

上傳keychain和描述文件

這里我們選剛剛拷貝過去的Jenkins文件目錄下的keychain和描述文件。點擊選取文件->搜索login.keychain,這里要注意下是否為Jenkins目錄下的keychain。

上傳keychain

上傳完之后打開鑰匙串,找到我需要上傳的兩本證書的名字,因為我想上傳一個開發證書和一個生產證書,所以上傳兩個。把這兩個證書的名字復制下來

證書名字

然后點擊 Add Code Signing Identity,分別把這兩個名字粘貼過去。完成了之后大概如下:

keychain

接下來就是描述文件了。這里要注意一點,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles這個地址。然后按照上傳keychain的步驟,把Jenkins用戶目錄下的描述文件上傳上去就行啦

Provisioning Profile地址

完了之后是這樣的。

keychain描述文件成功圖

4.配置項目

keychain配置好之后,接下來就是新建一個工程了。輸入你的項目名稱(項目名稱會在Jenkins下生成一個文件夾)。構建一個自由風格的軟件項目,點擊ok

新建項目

1.General

新建完之后點選丟棄舊的構建,配置一下保持構建的天數和最大個數

配置舊的構建

2.源碼管理

然后配置源碼管理,這是Jenkins拉取代碼的路徑(盡量精確到項目位置),如果Credentials沒有,則點擊右邊的add,填上自己的svn賬號和密碼。假如這欄沒有報紅,基本上地址什么的都是正確的了。

配置svn

3.構建環境

接下來配置構建環境,這里我們勾選Keychains and Code Signing Identities,選擇login.keychain,然后選擇對應的證書名字。同樣勾選Mobile Provisioning Profiles,選擇對應的描述文件。

構建環境

4.構建

因為我項目用到cocoapods,所以要先在構建這里選執行腳本,在里面輸入

#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的項目名稱

/usr/local/bin/pod update --verbose --no-repo-update

注意:沒有#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8 ? /usr/local/bin/ ?這幾句可能會造成編譯器讀不懂pod語句。當你構建的時候提示pod語句出錯,百分之九十都是這個錯誤。

創建腳本


輸入

接下來添加xcode構建工具

添加xcode構建工具

首先配置General,這里又有一個坑?。。?!輸出路徑必須是workspace路徑下的,然后會報權限不夠等之類的問題

xcode-general配置

之后是Code signing & OS X keychain options

Code signing & OS X keychain options

接下來是配置 Advanced Xcode build options。

tips:jenkins會在它的目錄Home->workspace下建一個文件夾,這個文件夾名字就是你的項目名字(比如你的項目名字叫JenkinsProj,那么會存在Jenkins->Home->workspace->JenkinsProj這個文件夾)。${WORKSPACE}一般都會到Jenkins創建的文件夾下。

Build output diretory 還是老實點寫在workspace下比較好,因為Jenkins創建的目錄我覺得足夠清晰了。之前我寫在另一個用戶下就會報權限問題。

advance配置

一般這樣配置完就可以成功打包了,在整個配置過程中,都不能粗心大意或者自以為是的隨意配置??赡芪恼逻€有寫的不夠的地方或者錯誤的地方,歡迎大家指正完善。也希望大家把遇到的問題多多分享一下~

錯誤大全


1.鑰匙串的錯誤

類似下面的鑰匙串錯誤,我給大家個tips:

1、鑰匙串無非是兩個地方設置和用到,分別為系統管理->Keychains and Provisioning Profiles Management 和 項目配置里面->構建環境下的Keychains and Code Signing Identities 這兩個地方去找,看有沒有不匹配的地方,或者按照上面說到的相應步驟重新來。

鑰匙串錯誤


2.cocoapods錯誤

類似下面的錯誤,一般先要檢查項目配置里面->構建->Execute shell 有沒有寫錯。

#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的項目文件

/usr/local/bin/pod update --verbose --no-repo-update

如果這樣寫還不行,mac注銷當前用戶,進入Jenkins用戶,看是否安裝了cocoapods,如果沒有安裝,需要安裝一下,并且版本要與當前用戶一致(Jenkins用戶的密碼可以在系統偏好設置->用戶與群組設置。)

cocoapods錯誤

3.Xcode終止打包

遇到Xcode終止打包這時進入Jenkins用戶,在Jenkins下編譯看有沒有問題。如果有問題,這時候就要檢查下你svn上的項目是否正確了。

4.scheme錯誤

打開Xcode->manageSchema,把share勾上


大家可以把遇到的問題留言,我們共同解決

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

推薦閱讀更多精彩內容