![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1492580711991&di=ee431d5c147818e7f80e7f6bc9c41274&imgtype=jpg&src=http://img0.imgtn.bdimg.com/it/u=2659762973,1024349474&fm=214&gp=0.jpg)
前言
一搁吓、持續(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è)置原理一樣
這里要注意用正確的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)擊
如圖:
上傳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
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)致操作失敗拙友。