利用Jenkins進(jìn)行iOS持續(xù)集成

前言

一搁吓、持續(xù)集成優(yōu)點(diǎn):
1原茅、縮減開(kāi)發(fā)周期,快速迭代版本
2堕仔、提供分發(fā)效率擂橘,測(cè)試人員以及相關(guān)人員無(wú)需等待開(kāi)發(fā)人員打包
3、減少重復(fù)操作摩骨,高效打包通贞,減輕開(kāi)發(fā)人員工作量。

二恼五、iOS 持續(xù)集成的大概原理為:
1昌罩、通過(guò)Jenkins作為一個(gè)觸發(fā)器,捕捉push等操作或者定時(shí)灾馒,觸發(fā)打包動(dòng)作茎用;
2、GIT plugin 進(jìn)行項(xiàng)目源碼管理睬罗;
3轨功、通過(guò)Xcode integration進(jìn)行打包。

目錄

一容达、安裝Jenkins
二古涧、Jenkins密碼設(shè)置
三、初始設(shè)置
四董饰、安裝Jenkins插件
五蒿褂、新建項(xiàng)目
六、General參數(shù)
七卒暂、源碼管理
八啄栓、構(gòu)建觸發(fā)器設(shè)置
九、構(gòu)建環(huán)境設(shè)置
十也祠、構(gòu)建
十一昙楚、打包上傳
十二、其他

正文

一诈嘿、安裝Jenkins

方法一: 直接到官網(wǎng)下載安裝包
通過(guò)安裝包安裝

方法二:通過(guò)Homebrew使用命令行安裝
1堪旧、安裝Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2削葱、安裝Jenkins
brew install jenkins
3、啟動(dòng)Jenkins

jenkins

安裝完成后淳梦,瀏覽器可能自動(dòng)打開(kāi)Jenkins析砸,如果沒(méi)有自動(dòng)打開(kāi),到瀏覽器輸入http://localhost:8080

二爆袍、Jenkins密碼設(shè)置

打開(kāi)http://localhost:8080 會(huì)出現(xiàn)一下界面首繁,通過(guò)密碼解鎖。

/Users/Shared/Jenkins/Home/ 目錄下找到secrets
這里存在一個(gè)權(quán)限問(wèn)題陨囊,需要右擊secrets文件夾弦疮,選擇"簡(jiǎn)介",在簡(jiǎn)介最下面找到共享與權(quán)限蜘醋,進(jìn)行權(quán)限修改胁塞,才能打開(kāi)這個(gè)文件夾,
然后在里面找到initialAdminPassword文件压语,同樣地進(jìn)行權(quán)限修改后啸罢,打開(kāi)initialAdminPassword文件,里面的就是初始密碼胎食,復(fù)制密碼到剛才的頁(yè)面中盡心解鎖伺糠。
Jenkins 是以一個(gè)用戶(hù)進(jìn)程存在于電腦中的,你重新開(kāi)機(jī)的時(shí)候會(huì)發(fā)現(xiàn)多了一個(gè)Jenkins用戶(hù)斥季,Jenkeins的相關(guān)文件最好在這個(gè)用戶(hù)下進(jìn)行操作,避免權(quán)限問(wèn)題無(wú)法操作累驮。

也可以在管理員賬號(hào)下對(duì)Jenkins用戶(hù)賬號(hào)的密碼進(jìn)行更改酣倾。

三、初始設(shè)置

最后進(jìn)行賬戶(hù)注冊(cè)谤专,注冊(cè)了賬戶(hù)之后躁锡,關(guān)掉頁(yè)面,重新打開(kāi)輸入localhost:8080,這個(gè)時(shí)候就會(huì)讓你以賬戶(hù)形式登錄置侍,進(jìn)入主頁(yè)面

四映之、安裝Jenkins插件

在開(kāi)始新建工程前需要按照一些Jenkins插件,在后面的工程設(shè)置中會(huì)用到


選擇系統(tǒng)管理


可選插件中選擇我們需要的插件進(jìn)行安裝:
1蜡坊、Xcode integration
2杠输、GIT plugin
3、GitLab Plugin
4秕衙、Gitlab Hook Plugin
5蠢甲、Keychains and Provisioning Profiles Management

五、新建項(xiàng)目

構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目:


六据忘、General參數(shù)

可以設(shè)置包的保留天數(shù)和最大保留個(gè)數(shù)
這些可以根據(jù)需要進(jìn)行調(diào)整鹦牛,可以不要選

七搞糕、源碼管理


這里需要進(jìn)行ssh key 設(shè)置

點(diǎn)開(kāi)Add按鈕進(jìn)行ssh key 設(shè)置,與git ssh key設(shè)置原理一樣

Paste_Image.png

這里要注意用正確的ssh 私鑰曼追。

在branch specifier中輸入分支名字:圖中的分支名為"JekinsTest"


八窍仰、構(gòu)建觸發(fā)器設(shè)置

觸發(fā)器可自定義的地方很多,Poll SCM最常用
圖中的日程表標(biāo)示20分鐘檢查是否更新進(jìn)行構(gòu)建


九礼殊、構(gòu)建環(huán)境設(shè)置

這里主要是設(shè)置簽名文件和證書(shū)驹吮,我們先要去“Keychains and Provisioning Profiles Managemen”插件進(jìn)行設(shè)置:

到Jenkins 首頁(yè),點(diǎn)擊
如圖:

Paste_Image.png

上傳Provisioning Profile


設(shè)置login.keychain,login.keychian 在/Users/管理員用戶(hù)名/Library/keychains/login.keychain中可以拿到,
Code Signing Identity 復(fù)制證書(shū)名字填上去筒狠。

設(shè)置完畢后回到剛才的構(gòu)建環(huán)境設(shè)置
我們勾選“Keychains and Code Signing Identities”和“Mobile Provisioning Profiles”

十拱绑、構(gòu)建

這里我們用Xcode進(jìn)行構(gòu)建打包


1、General build settings


2询刹、Code signing & OS X keychain options

Paste_Image.png

3、Advanced Xcode build options

Note:在macOS10.10以上的系統(tǒng)中,用Jenkins的Xcode插件打包竭业,重簽名會(huì)出現(xiàn)問(wèn)題,報(bào)錯(cuò):
“Warning: --resource-rules has been deprecated in Mac OS X >= 10.10“
解決方法:
打開(kāi)/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication及舍,然后將:

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                  "--sign", $opt{sign},
                  "--resource-rules=$destApp/ResourceRules.plist");

替換成

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                  "--sign", $opt{sign});

十一未辆、打包上傳

這里使用的是bugly的內(nèi)測(cè)分發(fā)

#!/usr/bin/env bash
cd $WORKSPACE/build

curl —insecure -F "file=@ipa包的名字.ipa" -F "app_id=bugly中的app_id" -F "pid=2" -F "title=標(biāo)題" -F "description=用于Jekins持續(xù)集成測(cè)試" -F "secret=2" -F "password=分發(fā)時(shí)需要填的密碼" -F "download_limit=2000" https://api.bugly.qq.com/beta/apiv1/exp?app_key=bugly中的app_key

十二、其他

我們的工程中通過(guò)git submodule 進(jìn)行了模塊管理锯玛,第一次拉代碼的時(shí)候需要手動(dòng)進(jìn)行g(shù)it submodule update咐柜,添加子模塊的內(nèi)容進(jìn)去。
這個(gè)時(shí)候必須在Jenkins用戶(hù)賬號(hào)下操作攘残,不然會(huì)因?yàn)樽x寫(xiě)權(quán)限的限制導(dǎo)致操作失敗拙友。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市歼郭,隨后出現(xiàn)的幾起案子遗契,更是在濱河造成了極大的恐慌,老刑警劉巖病曾,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牍蜂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泰涂,警方通過(guò)查閱死者的電腦和手機(jī)鲫竞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)负敏,“玉大人贡茅,你說(shuō)我怎么就攤上這事。” “怎么了顶考?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵赁还,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我驹沿,道長(zhǎng)艘策,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任渊季,我火速辦了婚禮朋蔫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘却汉。我一直安慰自己驯妄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布合砂。 她就那樣靜靜地躺著青扔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翩伪。 梳的紋絲不亂的頭發(fā)上微猖,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音缘屹,去河邊找鬼凛剥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轻姿,可吹牛的內(nèi)容都是我干的犁珠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼互亮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盲憎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胳挎,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溺森,沒(méi)想到半個(gè)月后慕爬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屏积,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年医窿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炊林。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姥卢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情独榴,我是刑警寧澤僧叉,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站棺榔,受9級(jí)特大地震影響瓶堕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜症歇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一郎笆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忘晤,春花似錦宛蚓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至壹置,卻和暖如春竞思,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钞护。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工盖喷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人难咕。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓课梳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親余佃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暮刃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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