學(xué)會(huì)使用 Jenkins 搭建 iOS 持續(xù)集成環(huán)境

以往每次編譯打包 iOS 項(xiàng)目 都需要花費(fèi) 2 分多鐘数尿,這時(shí)候電腦就會(huì)很卡(電腦:配置不高怪我咯)赦肃,讓我們怎么愉快地進(jìn)行其他的工作呢适室?打包完了還得提交 ipa 文件發(fā)給測試,或者手動(dòng)上傳蒲公英 / fir 等馏艾。最近劳曹,由于公司產(chǎn)品增多,對項(xiàng)目的快速開發(fā)琅摩、測試铁孵、分發(fā)、上線提出了更高的要求……就不能讓這一切簡單一點(diǎn)房资?

答案是可以库菲。使用 Jenkins 可以輕松地幫我們完成很多工作,讓常規(guī)任務(wù)實(shí)現(xiàn)自動(dòng)化志膀。

持續(xù)集成的概念

持續(xù)集成熙宇,即 Continuous integration ,簡稱 CI溉浙。
隨著軟件開發(fā)復(fù)雜度的不斷提高烫止,團(tuán)隊(duì)開發(fā)成員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為開發(fā)過程中不可回避的問題。尤其是近些年來戳稽,敏捷(Agile) 在軟件工程領(lǐng)域越來越紅火馆蠕,如何能再不斷變化的需求中快速適應(yīng)和保證軟件的質(zhì)量也顯得尤其的重要。

持續(xù)集成的特點(diǎn)

它是一個(gè)自動(dòng)化的周期性的集成測試過程惊奇,從檢出代碼互躬、編譯構(gòu)建、運(yùn)行測試颂郎、結(jié)果記錄吼渡、測試統(tǒng)計(jì)等都是自動(dòng)完成的,無需人工干預(yù)乓序;
需要有專門的集成服務(wù)器來執(zhí)行集成構(gòu)建寺酪;
需要有代碼托管工具支持坎背;
持續(xù)集成的作用

保證團(tuán)隊(duì)開發(fā)人員提交代碼的質(zhì)量,減輕了軟件發(fā)布時(shí)的壓力寄雀;
持續(xù)集成中的任何一個(gè)環(huán)節(jié)都是自動(dòng)完成的得滤,無需太多的人工干預(yù),有利于減少重復(fù)過程以節(jié)省時(shí)間盒犹、費(fèi)用和工作量懂更;

Jenkins 是什么

簡單的說,Jenkins 是一種基于 Java 開發(fā)的持續(xù)集成工具急膀,前身稱作Hudson膜蛔,它是一個(gè)開源軟件項(xiàng)目,提供了用于監(jiān)控持續(xù)重復(fù)工作的軟件平臺(tái)脖阵。

Jenkins 搭建步驟

下載安裝

打開Jenkins官網(wǎng),點(diǎn)擊下載

我用的是 2.19.1 系統(tǒng)選擇 Mac OS X 墅茉, 得到 pkg 文件安裝

安裝過程不難命黔,照著提示操作就行

安裝過程中,要用到一個(gè)密碼解鎖 Jenkins就斤,可在 /var/log/jenkins/jenkins.log 文件中找到

Jenkins 安裝完畢后悍募,會(huì)在系統(tǒng)中創(chuàng)建一個(gè) jenkins 用戶,后續(xù)要導(dǎo)入證書文件到 jenkins

導(dǎo)出公司開發(fā)和發(fā)布證書洋机,得到 2 個(gè) p12 文件
打開終端為用戶 jenkins 設(shè)置一個(gè)密碼,以便我們接下來的登錄操作

sudo dscl . passwd /Users/jenkins YourPassword

注銷當(dāng)前用戶坠宴,登錄 jenkins ,雙擊前面得到的 p12 文件導(dǎo)入證書
安裝完畢绷旗,進(jìn)入 http://localhost:8080 喜鼓,來到 Jenkins 使用界面,創(chuàng)建一個(gè)新項(xiàng)目

選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”
填寫 Git 項(xiàng)目的 URL 地址,當(dāng)然衔肢,如果使用 SVN 就選擇 subversion
增加構(gòu)建步驟:選擇Xcode
Target 填寫 iOS 工程中的 Target 名稱
打包需要使用到鑰匙串中的開發(fā)證書庄岖,選擇 Unlock Keychain, Keychain path 默認(rèn)是 /Users/Shared/Jenkins/Library/Keychains/login.keychain ,密碼為上面我們創(chuàng)建的用戶 jenkins 的登錄密碼
配置完畢保存角骤,點(diǎn)擊開始構(gòu)建隅忿。紅色小圓點(diǎn)表示構(gòu)建失敗,藍(lán)色小圓點(diǎn)表示構(gòu)建成功

自己踩的一些坑邦尊,幾乎都是關(guān)于 Keychain 和 Provisioning Profiles

1背桐、拷貝文件失敗
java.io.IOException: Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/test.mobileprovision to /Users/Shared/Jenkins/Provisioning/d135cf91-b24e-7896-xv6i-6bd234945a99.mobileprovision
at hudson.FilePath.copyTo(FilePath.java:2018)

解決方法:檢查相關(guān)文件夾的讀寫權(quán)限

2、找不到描述文件
Code Sign error: No provisioning profiles found: No non–expired provisioning profiles were found.

解決方法:將相關(guān)描述文件拷貝到 /Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 文件夾中

3蝉揍、描述文件不匹配
Code Sign error: No matching provisioning profiles found: No provisioning profiles matching an applicable signing identity were found.
Code Sign error: No matching provisioning profiles found: No provisioning profiles with a valid signing identity (i.e. certificate and private key pair) matching the bundle identifier “com.abc.test” were found.

解決方法:檢查項(xiàng)目和描述文件是否對應(yīng)

以上就是我最近學(xué)習(xí)使用 Jenkins 的小結(jié)链峭,寫的比較簡單,只介紹了幾個(gè)最基本的步驟又沾,后續(xù)有時(shí)間再來完善下熏版。
另外纷责,Jenkins 還有很多強(qiáng)大的功能和特性值得我們?nèi)ヌ剿骱蛯W(xué)習(xí)。

參考

持續(xù)集成和Jenkins介紹
使用 Jenkins 實(shí)現(xiàn)軟件開發(fā)的持續(xù)集成
Jenkins Xcode 證書設(shè)置錯(cuò)誤 Code Sign error: No matching codesigning identity found: No codesigning identities
stackoverflow -- Xcode 5 continuous integration CodeSign fail

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撼短,一起剝皮案震驚了整個(gè)濱河市再膳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曲横,老刑警劉巖喂柒,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異禾嫉,居然都是意外死亡灾杰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門熙参,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艳吠,“玉大人,你說我怎么就攤上這事孽椰≌衙洌” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵黍匾,是天一觀的道長栏渺。 經(jīng)常有香客問我,道長锐涯,這世上最難降的妖魔是什么磕诊? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮纹腌,結(jié)果婚禮上霎终,老公的妹妹穿的比我還像新娘。我一直安慰自己升薯,他們只是感情好神僵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著覆劈,像睡著了一般保礼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上责语,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天炮障,我揣著相機(jī)與錄音,去河邊找鬼坤候。 笑死胁赢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的白筹。 我是一名探鬼主播智末,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼谅摄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了系馆?” 一聲冷哼從身側(cè)響起送漠,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎由蘑,沒想到半個(gè)月后闽寡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尼酿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年爷狈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裳擎。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涎永,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鹿响,到底是詐尸還是另有隱情羡微,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布抢野,位于F島的核電站,受9級特大地震影響各墨,放射性物質(zhì)發(fā)生泄漏指孤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一贬堵、第九天 我趴在偏房一處隱蔽的房頂上張望恃轩。 院中可真熱鬧,春花似錦黎做、人聲如沸叉跛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筷厘。三九已至,卻和暖如春宏所,著一層夾襖步出監(jiān)牢的瞬間酥艳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工爬骤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留充石,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓霞玄,卻偏偏與公主長得像骤铃,于是被迫代替她去往敵國和親拉岁。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容