Jenkins For iOS安裝

我個(gè)人當(dāng)電腦環(huán)境:

macOS Sierra 10.12
Xcode Version 8.1
java version "1.8.0_111"


1.安裝Jenkins

安裝Jenkins 有兩種方式,一種是下載pkg安裝包,一種是下載.war安裝包進(jìn)行安裝哭廉。當(dāng)然整以,無(wú)論選哪種方式都需要去官網(wǎng) 下載康愤。

安裝步驟請(qǐng)參考以下文章:
手把手教你利用Jenkins持續(xù)集成iOS項(xiàng)目 (通過(guò)pkg安裝)
一步一步構(gòu)建iOS持續(xù)集成:Jenkins+GitLab+蒲公英+FTP (通過(guò)war安裝)

安裝成功后在瀏覽器中輸入 http://localhost:8080 看下是能在瀏覽器中打開(kāi)秩仆,如果能直接打開(kāi)操漠,恭喜你安裝成功啦业汰!

如果 http://localhost:8080 打開(kāi)是 404 的話(我就是)片任,一般情況下是JDK版本不支持,需要下載 最新的java運(yùn)行環(huán)境,下載并安裝好JDK后刷新 http://localhost:8080 頁(yè)面就可以了蔬胯。

404錯(cuò)誤对供,需要更新JDK

安裝JDK


安裝JDK

安裝成功后重新打開(kāi) http://localhost:8080 的頁(yè)面一般長(zhǎng)這樣:

安裝成功待Unlock頁(yè)面.png

這個(gè)時(shí)候需要我們需要去到 /Users/Shared/Jenkins/Home/secrets 目錄下,打開(kāi) initialAdminPassword 文件氛濒,把密碼復(fù)制出來(lái)填到網(wǎng)頁(yè)上去重置密碼产场。

前往/Users/Shared/Jenkins/Home/secrets 目錄,提示沒(méi)有權(quán)限

如果提示權(quán)限不夠舞竿,需要修改相應(yīng)的文件權(quán)限:

修改everyone權(quán)限為只讀
修改initialAdminPassword權(quán)限

密碼輸進(jìn)去后就是初始化京景。最后輸入初始管理員的用戶(hù)名密碼等個(gè)人信息保存完成。


選擇安裝默認(rèn)插件

進(jìn)去之后頁(yè)面是這樣的


創(chuàng)建一個(gè)新任務(wù)

總結(jié):

  1. 安裝后無(wú)法打開(kāi)localhost 頁(yè)面一般情況下是JDK版本不支持骗奖,需要更新JDK确徙。
  2. 無(wú)法打開(kāi)文件時(shí)需要修改文件權(quán)限醒串。
  3. 安裝Jenkins 成功后,會(huì)在/Users/Shared/ 目錄下創(chuàng)建一個(gè) Jenkins 用戶(hù)鄙皇,其中Jenkins中所有相關(guān)文件都存放在該目錄 ** /Users/Shared/Jenkins ** 下芜赌。
    初始狀態(tài)下該目錄結(jié)構(gòu)如下:
  • Jenkins
    • Home
    • temp

2.在Jenkins中配置Xcode工程

先別點(diǎn)“創(chuàng)建一個(gè)新任務(wù)”,在這之前我們需要下載構(gòu)建iOS項(xiàng)目的插件:
進(jìn)去以后選擇‘系統(tǒng)管理’ -- ‘管理插件’


管理插件

搜索Xcode伴逸,下載安裝Xcode integration插件

下載安裝Xcode integration插件

安裝完成以后我們?cè)诨氐绞醉?yè)點(diǎn)擊“創(chuàng)建一個(gè)新任務(wù)”,輸入項(xiàng)目名稱(chēng)缠沈,選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”


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

構(gòu)建項(xiàng)目完成后進(jìn)入項(xiàng)目配置頁(yè)面:


項(xiàng)目配置頁(yè)面

可以看到配置步驟主要有:

  • General
  • 源碼管理
  • 構(gòu)建觸發(fā)器
  • 構(gòu)建環(huán)境
  • 構(gòu)建
  • 構(gòu)建后操作

General

  1. 設(shè)置項(xiàng)目名稱(chēng)
  2. 如果是GitHub 上的項(xiàng)目,可以直接勾選 GitHub project错蝴,并輸入github上項(xiàng)目的地址
  3. 丟棄舊的構(gòu)建
  4. ...
    等等其他設(shè)置洲愤,目前我的設(shè)置如下:
General設(shè)置

源碼管理

可以選擇None、git顷锰、svn 三種托管方式
我這里用的github上的項(xiàng)目

選擇Git柬赐,填上項(xiàng)目地址

構(gòu)建觸發(fā)器

暫時(shí)不管

構(gòu)建環(huán)境

暫時(shí)不填

構(gòu)建(重要)

選擇構(gòu)建步驟-->Xcode (如果沒(méi)裝Xcode插件這里就沒(méi)法選)

一. General build settings

  1. Target 填項(xiàng)目Target,我這是:JenkinsDemo
  2. 展開(kāi)Settings官紫,勾選上 Clean before build? 和** Allow failing build results?**
  3. Configuration 中根據(jù)情況填 DebugRelease
  4. 勾選上 *Pack application and build .ipa? (是否打包成ipa)
  • .ipa filename pattern:表示打包的ipa命名前綴躺率,例如根據(jù)版本號(hào)命名、根據(jù)日期命名
  • Output directory: 打包后的ipa存放目錄万矾,我這填的是 ${HOME}/build/ 表示:“/Users/Shared/Jenkins/Home/build”路徑,其中${HOME} 代表 Jenkins用戶(hù)下的Home目錄(/Users/Shared/Jenkins/Home)
  • Manifest Plist URL:暫時(shí)不知道做什么的
構(gòu)建

二. Code signing & OS X keychain options
和簽名相關(guān)的一些設(shè)置
由于Jenkins下沒(méi)有打包需要用到的證書(shū)和描述文件慎框,因此良狈,需要把證書(shū)拷貝的Jenkins環(huán)境下,有兩種方法:

一種是安裝 Keychains and Provisioning Profiles Management 插件進(jìn)行證書(shū)的管理

另一種是直接把當(dāng)前用戶(hù)的證書(shū)( 載在 /Users/xxx/Library/MobileDevice/Provisioning Profiles 目錄下)
拖到Jenkins根目錄(/Users/Shared/Jenkins/Library)下的MobileDevice/Provisioning Profile目錄中
即:把 /Users/xxx/Library/MobileDevice (xxx表示你自己的用戶(hù)名)目錄拷貝到 /Users/Shared/Jenkins/Library 下

勾選 Unlock Keychain?Keychain path是固定填寫(xiě)${HOME}/Library/Keychains/login.keychain
Keychain password指的是你的授權(quán)密碼笨枯,不是證書(shū)密碼薪丁。

注意:${HOME}目錄指的是Jenkins的根目錄,也就是/Users/Shared/Jenkins馅精,如果你的jenkins是新裝的严嗜,你會(huì)發(fā)現(xiàn)Library目錄中壓根就沒(méi)有Keychains目錄。你需要去/Users/xxx/Library目錄下把Keychains目錄復(fù)制過(guò)來(lái)洲敢。
復(fù)制過(guò)來(lái)后:/Users/Shared/Jenkins/Library 目錄下就有 KeychainsMobileDevice 兩個(gè)目錄了

配置Code signing & OS X keychain options

三. Advanced Xcode build options

  1. Xcode Schema File:填工程的Schema
  2. SDK: 選擇編譯使用的SDK漫玄,不填則是默認(rèn)值
  3. SYMROOT: 編譯時(shí)SYMROOT文件目錄,我這里填的是 ${HOME}/buildSymroot/
  4. Custom xcodebuild arguments:編譯時(shí)傳入的參數(shù)
  5. Xcode Workspace File: 如果項(xiàng)目使用的是xcworkspace的話這里就需要填對(duì)應(yīng)的工程名压彭,不需要加 ".xcworkspace" 后綴
  6. Xcode Project Directory:可不填
  7. Xcode Project File : 可不填
  8. Build output directory:編譯時(shí)生成的文件存放目錄睦优,這里我填的是 ${HOME}/build/
Advanced Xcode build options

注意:
如果項(xiàng)目中使用了cocoapods進(jìn)行依賴(lài)管理,在構(gòu)建時(shí)會(huì)報(bào)錯(cuò):
Xcodebuild fails in jenkins with cocoapods

ld: warning: directory not found for option '-L/Users/Shared/Jenkins/build/Release-iphoneos/Masonry'
ld: library not found for -lMasonry
clang: error: linker command failed with exit code 1 (use -v to see invocation)

需要在 Product -> Scheme -> Manage Schemes 中勾選上所依賴(lài)的Pods


library not found for xxx

構(gòu)建后步驟

在項(xiàng)目構(gòu)建完成后可以選擇發(fā)送郵件或其他方式進(jìn)行提醒

開(kāi)始構(gòu)建項(xiàng)目

選中JenkinsDemo壮不,點(diǎn)擊立即構(gòu)建汗盘,下放BuildHistory中會(huì)顯示構(gòu)建歷史記錄,點(diǎn)擊當(dāng)前構(gòu)建询一,進(jìn)入構(gòu)建詳情頁(yè):

立即構(gòu)建
構(gòu)建詳情

可以通過(guò)Console Output 查看該次構(gòu)建的詳細(xì)日志隐孽,如果構(gòu)建失敗可以根據(jù)這里輸出的日志查找錯(cuò)誤原因:

輸出日志

我一般是直接拉到日志底部查看日志結(jié)果癌椿,失敗信息直接在底部可以看到。

這里是我遇到的幾個(gè)失敗日志:

  1. 提示沒(méi)有匹配的證書(shū)菱阵,我的解決辦法是:?jiǎn)⒂肵code8的Automatically manage signing踢俄,然后把當(dāng)前用戶(hù)的證書(shū)( 在 /Users/xxx/Library/MobileDevice/Provisioning Profiles 目錄下)
    拖到Jenkins根目錄(/Users/Shared/Jenkins/Library)下的MobileDevice/Provisioning Profile目錄中
=== BUILD TARGET JenkinsDemo OF PROJECT JenkinsDemo WITH CONFIGURATION Release ===

Check dependencies
No profile matching 'xxxx' found:  Xcode couldn't find a profile matching 'xxxxx'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.1'

** BUILD FAILED **

2.日志一直停留在 “There are no schemes ” 不走

[JenkinsDemo] $ /usr/bin/xcodebuild -list -workspace JenkinsDemo.xcworkspace
There are no schemes in workspace "JenkinsDemo".

解決辦法是上面提到的,在ManageScheme 中勾選所用到的Schemes

Manage scheme

3.提示沒(méi)有證書(shū)

=== BUILD TARGET JenkinsDemo OF PROJECT JenkinsDemo WITH CONFIGURATION Release ===

Check dependencies
Provisioning profile "iOS Team Provisioning Profile: TY.JenkinsDemo" doesn't include signing certificate "iPhone Developer: 451174332@qq.com (Y5P57G478W)".
Code signing is required for product type 'Application' in SDK 'iOS 10.1'

** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)
Cleaning up previously generated .ipa files
Cleaning up previously generated .dSYM.zip files
Packaging IPA
Finished: SUCCESS

需要把 “/Users/dengliwen/Library/Keychains” 文件拷貝到 “/Users/Shared/Jenkins/Library/Keychains” 中

4.其他錯(cuò)誤送粱,忘了是處理什么的了


鑰匙串->選擇證書(shū)->顯示簡(jiǎn)介->允許所有運(yùn)用程序訪問(wèn)此項(xiàng)目

待續(xù)褪贵。。抗俄。

參考鏈接:
使用 Jenkins 實(shí)現(xiàn)持續(xù)集成 (iOS)
http://www.cnblogs.com/qingjoin/p/3929493.html
http://www.cocoachina.com/ios/20160804/17281.html
http://www.360doc.com/content/14/0508/19/10058718_375884734.shtml
http://www.cnblogs.com/qingjoin/p/3929493.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脆丁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子动雹,更是在濱河造成了極大的恐慌槽卫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胰蝠,死亡現(xiàn)場(chǎng)離奇詭異歼培,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)茸塞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)躲庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钾虐,你說(shuō)我怎么就攤上這事噪窘。” “怎么了效扫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵倔监,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我菌仁,道長(zhǎng)浩习,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任济丘,我火速辦了婚禮谱秽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摹迷。我一直安慰自己弯院,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布泪掀。 她就那樣靜靜地躺著听绳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪异赫。 梳的紋絲不亂的頭發(fā)上椅挣,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天头岔,我揣著相機(jī)與錄音,去河邊找鬼鼠证。 笑死峡竣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的量九。 我是一名探鬼主播适掰,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荠列!你這毒婦竟也來(lái)了类浪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肌似,失蹤者是張志新(化名)和其女友劉穎费就,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體川队,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡力细,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了固额。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眠蚂。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斗躏,靈堂內(nèi)的尸體忽然破棺而出逝慧,到底是詐尸還是另有隱情,我是刑警寧澤瑟捣,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站栅干,受9級(jí)特大地震影響迈套,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碱鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一桑李、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窿给,春花似錦贵白、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至角撞,卻和暖如春呛伴,著一層夾襖步出監(jiān)牢的瞬間勃痴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工热康, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沛申,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓姐军,卻偏偏與公主長(zhǎng)得像铁材,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奕锌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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